Назад | Перейти на главную страницу

Как с помощью цикла 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].

Попробуйте использовать forfiles вместо. Кажется, что он более ограничен в отношении того, что он возвращает для расширения, плюс он имеет дополнительное преимущество в виде встроенного for петля. Должен уже быть на коробке Win7, но вам, возможно, придется установить комплект ресурсов сервера 2003 на коробку 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