在 Microsoft cmd.exe 中使用 for 循环,如何仅处理具有特定扩展名的文件?

在 Microsoft cmd.exe 中使用 for 循环,如何仅处理具有特定扩展名的文件?

我有一个文件夹和c:\test\里面的两个文件。a.txtb.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

相关内容