cmd.exe: „del * .txt” usuwa również * .txt1 itp. [duplikat]


Odpowiedzi:


8

To czasami spotykane, nieco znane?

Wyjaśnienie zachowania jest tutaj , wraz z możliwym obejściem problemu.

Podsumowanie: Pochodzi ze sposobu, w jaki NTFS obsługuje krótkie (8.3) nazwy plików, w celu zapewnienia zgodności ze starszymi rzeczami, które nie obsługują długich nazw plików „o nowym wymiarze”. dir /xmożna użyć do wyświetlenia krótkiej nazwy pliku, tak jak:

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
 ...

Rozszerzenia dłuższe niż trzy znaki zostaną po prostu obcięte dla krótkiej nazwy pliku; tak .txt1, .txtxtxtxt, .txt_file, etc, wszystko stać .txt.


6

Pliki z rozszerzeniem zawierającym więcej niż 4 litery (i mają zastosowanie również inne reguły), otrzymują krótką nazwę, więc na przykład „foo.txt1” ma krótką nazwę „foo ~ 1.txt”. DEL(podobnie jak DIRi prawdopodobnie większość innych cmd.exewbudowanych poleceń) również będzie działać na krótkich nazwach. Dyskusję na pokrewny temat można znaleźć tutaj: http://blogs.msdn.com/b/oldnewthing/archive/2005/07/20/440918.aspx


+1 za link bardziej autorytatywny niż mój.
Jim Davis

2

Czy byłby to system plików FAT / VFAT? Jeśli tak, zostajesz ugryziony przez hakery używane do reprezentowania nazw, które nie pasują do schematu 8.3; dostępna jest DIRopcja, która pokazuje zniekształcone krótkie nazwy, które zaczynają się od rzeczywistej nazwy pliku, ale ~przed rozszerzeniem mają znaki i, a następnie rozszerzenie jest ograniczone do 3 znaków. (Przykład: C:\Program Fileszwykle oznacza C:\PROGRA~1.) Symbol wieloznaczny może nieoczekiwanie pasować do tych nazw. To nie powinno się zdarzyć na NTFS lub (tak myślę) na udziałach sieciowych. poza tym, że DOS wciąż nie umarł, wydaje się ...


2

Prawdopodobnie możesz użyć Forfilespolecenia do obejścia tego problemu

Na przykład.

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

Dopasowuje tylko txtzakończenia.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.