cmd.exe: “del * .txt” entfernt auch * .txt1 etc [duplicate]


Antworten:


8

Es ist eine gelegentlich angetroffene etwas bekannte?

Hier finden Sie eine Erklärung des Verhaltens sowie eine mögliche Problemumgehung.

Zusammenfassung: Es kommt von der Art und Weise, wie NTFS mit kurzen (8.3) Dateinamen umgeht, um die Kompatibilität mit älteren Dingen zu gewährleisten, die keine langen Dateinamen mit "neuem Fang" verarbeiten können. dir /xkann verwendet werden, um den kurzen Dateinamen wie folgt anzuzeigen:

C:\>dir /x *~*
 ...
02/25/2011  08:18 AM    <DIR>          DOCUME~1     Documents and Settings
05/28/2011  12:02 AM    <DIR>          PROGRA~1     Program Files
 ...

Erweiterungen, die länger als drei Zeichen sind, werden aufgrund ihres kurzen Dateinamens einfach abgeschnitten. so .txt1, .txtxtxtxt, .txt_file, usw., alle werden .txt.


6

Dateien mit mehr als 4 Buchstaben in der Endung (und natürlich auch anderen Regeln) erhalten einen Kurznamen, so hat beispielsweise "foo.txt1" den Kurznamen "foo ~ 1.txt". DEL(Wie DIRund möglicherweise die meisten anderen cmd.exeeingebauten Befehle) werden auch Kurznamen verarbeitet. Eine Diskussion zu einem verwandten Thema finden Sie hier: http://blogs.msdn.com/b/oldnewthing/archive/2005/07/20/440918.aspx


+1 für einen verbindlicheren Link als meinen.
Jim Davis

2

Wäre dies auf einem FAT / VFAT-Dateisystem? Wenn ja, werden Sie von der Hackerei gebissen, mit der Namen dargestellt werden, die nicht in das 8.3-Schema passen. Es gibt eine DIROption, die Ihnen die verstümmelten Kurznamen anzeigt, die mit dem tatsächlichen Dateinamen beginnen, aber ein ~und eine Nummer vor der Erweiterung haben. Die Erweiterung ist dann auf 3 Zeichen begrenzt. (Beispiel: Wird C:\Program Filesnormalerweise in übersetzt C:\PROGRA~1.) Ein Platzhalter stimmt möglicherweise unerwartet mit diesen Namen überein. Dies sollte nicht auf NTFS oder (glaube ich) auf Netzwerkfreigaben passieren. außer dass DOS immer noch nicht gestorben ist, so scheint es ....


2

Sie können den ForfilesBefehl wahrscheinlich für eine Problemumgehung verwenden

Z.B.

Forfiles  -s -m *.txt -c "cmd /C del /q @path"

Stimmt nur mit txtEndungen überein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.