2013-09-15 3 views
2

В DOS пакетного файла я могу написать следующий цикл для перебора файлов в каталоге в алфавитном порядке возрастания:Looping файлы в каталоге, в обратном порядке

for %f in (*) do (echo %f) 

Как сделать то же самое, но перебирать файлы в обратном порядке (по алфавиту по убыванию)?

ответ

2

Из командной строки:

for /f "tokens=*" %f in ('dir /b /o-n') do (echo %f) 

В файле летучей мыши:

for /f "tokens=*" %%f in ('dir /b /o-n') do (echo %%f) 

/B   Uses bare format (no heading information or summary). 
/O   List by files in sorted order. 
sortorder N By name (alphabetic) 
      - Prefix to reverse order 

Type "dir /?" in CMD for more details 
+4

Имена файлов могут иметь начальные пробелы - и 'лексемы = *' полосы ведущие пробелы. Всегда лучше использовать '' delims = "', если имя файла должно быть точным. – foxidrive

+0

@foxidrive - Аминь. Я никогда не понимал, почему так много людей используют «TOKENS = *», когда на самом деле они хотят «DELIMS =». – dbenham

+2

Простой цикл FOR возвращает только файлы, но команда DIR, как написано, возвращает оба файла и папки. Для удаления папок следует добавить параметр '/ A-D'. Чтобы действительно сделать его похожим на простое FOR, он должен иметь '/ A-D-H-S', чтобы также устранить скрытые и системные файлы. – dbenham

Смежные вопросы