forfiles * .something mask不会过滤输出

我试图运行一个基本的forfiles命令,但不pipe我使用什么样的掩码总是只打印整个目录的内容。 没有过滤的* .bat没有“是一个batch file”,只是一个简单的列表中的所有文件在C:\我正在一个winXPproffesional工作。 可能是什么原因?

forfiles /pc:\ /s /m *.bat /c "cmd /c echo @file is a batch file" 

不知何故,这个版本使用不同的语法:

 FORFILES -pc:\ -s -m*.BAT -c"CMD /C Echo @file is a batch file" 

作品!

该命令应该工作。

也许你有一个FORFILES.BAT,FORFILES.CMD或FORFILES.EXE的伪造副本在当前目录或恰好在你的PATH中的另一个目录。

尝试从命令行运行此命令以验证是否正在执行正确的FORFILES.EXE。

 for %F in (forfiles.exe forfiles.bat forfiles.cmd) do @echo %~$path:F 

如果这不是问题,那么它看起来像你有一个错误的FORFILES版本。

一次尝试使用一个选项来查看哪些选项可用

事实上, 在Windows XP中没有forfiles ,但是在Windows 2003 server中有一个forfiles , 语法和你的问题一样。

Windows 2000 确实有这个工具,但只有资源工具包的形式,必须单独下载。 出于某种原因, 相应的Technet文章没有列出forfiles作为工具包的一部分,但是从本文和本文中可以得出,它一定是在那里开始的。 也许微软的人决定停止发布旧版本,以避免与新版本混淆。

是的,这似乎是你的forfiles副本是旧版本,它有一个稍微不同的语法,如本文中所述。