我有一个文件夹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] 。
for %%I in (*.*) do if "%%~xI"==".txt" (echo %%I)
这应该做到这一点。
编辑:这是“脚本”的语法。 如果你想在命令行键入这个,你必须每次删除一个%符号,这样做:
for %I in (*.*) do if "%~xI"==".txt" (echo %I)
尝试使用forfiles代替。 对于扩展返回的内容似乎更具限制性,另外它还具有内置for循环的附加好处。 应该已经在Win7盒子上,但是你可能需要在XP盒子上安装一个2003 Server资源工具包来获取它。
在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