【问题标题】:Creating Bat file to execute a command on all files in folder and subfolders创建 Bat 文件以对文件夹和子文件夹中的所有文件执行命令
【发布时间】:2026-01-04 11:55:02
【问题描述】:

我需要在每个 xlsx 文件上运行这个命令行程序,并带有几个参数:

"C:\temp\cnv.exe" "param1" "param2" "param3",在哪里

  • param1-*.xlsx 文件的完整路径,也搜索过文件(例如“D:\temp\sample1.xlsx”);

  • param2-输出文件夹的完整路径,应该与当前文件相同(例如“D:\temp\”);

  • param3-static 措辞(“-layout”)。

开始,但不知道如何结束:

cd "d:\temp\" for /r %%i in (*.xlsx) do "C:\temp\cnv.exe" "%%i"........ "-layout"?

【问题讨论】:

  • 在命令提示符下输入for /?可以查看修饰符。您可能希望使用将%%i 扩展到其驱动器和路径的一个。

标签: windows batch-file cmd batch-processing


【解决方案1】:

您不需要将cd/R 切换:

for /r "D:\Temp" %%i in (*.xlsx) do "C:\temp\cnv.exe" "%%i" "%%~dpi" -layout

只有带有路径c:\temp\cnv.exe 的命令和路径应该用双引号引起来(如果它包含空格)-layout 和任何其他- 开关不需要双引号。

【讨论】:

  • for output folder, should be the same for the current file"D:\temp\" 替换为 "%%~dpi"
  • 我最终使用了:for /r "D:\Temp" %%i in (*.xlsx) do "C:\temp\cnv.exe" "%%i" "%%~dpi" -layout 感谢@Gerhard 和@Stephan,
  • @stephan。谢谢,我什至从未注意到该评论。改变它:)
  • 对批处理资源有什么建议吗?也许有一些例子,而不是标准的 win cmd 帮助。谢谢你:)
  • @lino。最好的资源在你的电脑上。运行cmd /? 它会为您提供所有命令。只需使用/? 开关运行每个命令即可获得每个命令的帮助。
【解决方案2】:

我看到你现在没有使用它,但是当你准备好使用 PowerShell 时,这可能是一个起点。

Get-ChildItem -Recurse *.csv |
    ForEach-Object { & C:\temp\exe `"$_.FullName1" `"$_.DirectoryName`" -layout }

【讨论】: