Используя цикл for в Microsoft cmd.exe, как я могу обрабатывать только файлы с определенным расширением?
У меня есть папка c:\test\
и два файла в нем a.txt
а также b.txtv
,
Я хотел бы обрабатывать только файлы с расширением, равным .txt
,
Если я напишу эту команду
cd c:\test
for %f in (*.txt) do echo %f
Я получу результат, где оба a.txt
а также b.txtv
перечислены.
То же самое происходит с
cd c:\test
dir *.txt
Похоже на то .txt
это то же самое из .txtv
,
У меня Windows XP SP3 на итальянском языке и результат
ver
является Microsoft Windows XP [Versione 5.1.2600]
,
Тот же результат от Windows 7 на английском Microsoft Windows XP [Version 6.1.7601]
,
3 ответа
Попробуйте использовать forfiles
вместо. Кажется, он более ограничен в отношении того, что он возвращает для расширения, плюс он имеет дополнительное преимущество встроенного for
петля. Уже должно быть на коробке Win7, но вам, возможно, придется установить 2003 Server Resource Kit на коробку XP, чтобы получить его там.
for %%I in (*.*) do if "%%~xI"==".txt" (echo %%I)
Это должно сделать это.
Изменить: это синтаксис "сценариев". Если вы хотите ввести это в командной строке, вы должны удалять один из знаков% каждый раз, когда они удваиваются, вставьте следующее:
for %I in (*.*) do if "%~xI"==".txt" (echo %I)
Это действительно просто в PowerShell и отлично работает со следующим:
PS C:\Users\bpabst\Desktop> ls *.txt
Directory: C:\Users\bpabst\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 7/2/2012 11:19 AM 11 test.txt