У меня есть папка 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