嵌套 forfiles:路径和扩展名过滤器
是否有可能嵌套两个 forfile
命令,以便我可以按 路径名 和 扩展名 进行过滤,然后仅对那些双重过滤的命令运行命令文件?
例如,我想获取所有用户的所有 Outlook HTML 签名。我可以通过以下方式执行此操作
forfiles /s /p c:\Users /m *Signatures* /c "cmd /c forfiles /s /p @path /m *.htm"
但这只会显示文件名,因为调用 cmd /c echo @file
是 forfiles
的默认行为。
更改此设置不起作用,因为那样我需要在内部 forfiles
命令中设置 /c
- 选项,该选项需要在引号中设置命令,从而产生双引号:
forfiles /s /p c:\Users /m *Signatures* /c "cmd /c forfiles /s /p @path /m *.htm /c "cmd /c echo @path""
如何转义内部引号或使用某种不同的方法对按路径子字符串和文件扩展名过滤的所有文件运行任何命令?
亲切的问候
sc911
[edit]忘记了递归搜索的/s
[/edit]
is there any possibility to nest two forfile
commands so that I can filter by pathname and by extension and then run a command only on those double filtered files?
By example I'd like to get all Outlook HTML-signatures of all users. I can do this by
forfiles /s /p c:\Users /m *Signatures* /c "cmd /c forfiles /s /p @path /m *.htm"
But this will only display the filenames because it's the default behavior of forfiles
to call cmd /c echo @file
.
Changing this doesn't work because then I'd need to set the /c
-option in the inner forfiles
command which requires to set the command in quotes resulting in double quotes:
forfiles /s /p c:\Users /m *Signatures* /c "cmd /c forfiles /s /p @path /m *.htm /c "cmd /c echo @path""
How can I escape the inner quotes or use some different approach to run any command on all files filtered by a substring of path and the file extension?
Kind regards
sc911
[edit] forgot /s
for recursive searching [/edit]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用两个嵌套的
FOR
命令来代替forfiles
。请参阅以下单行示例,在 cmd 提示符下进行测试
,并使用此代码作为框架来包含在 BAT 文件中
Instead of
forfiles
you can use two nestedFOR
commands.see the following one-liner example to test in a cmd prompt
and use this code as a skeleton to include in a BAT file
FORFILES
似乎能够识别\"
作为转义内部"
的方式。因此,以下内容应该有效:FORFILES
seems to be able to recognise\"
as the way of escaping inner"
. So, the following should work: