我有一个文件夹和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]
。
答案1
for %%I in (*.*) do if "%%~xI"==".txt" (echo %%I)
那就可以了。
编辑:这是“脚本”语法。如果您想在命令行中输入此内容,则每次重复 % 符号时都必须删除其中一个,链接如下:
for %I in (*.*) do if "%~xI"==".txt" (echo %I)
答案2
尝试使用forfiles
。它似乎对扩展返回的内容有更多限制,而且它还具有内置for
循环的额外优势。应该已经在 Win7 机器上,但你可能必须在 XP 机器上安装 2003 服务器资源工具包才能在那里使用它。
答案3
它在 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