Windows批处理For-loop如何指定特定PDF为首个输入调用GhostScript
批处理调整遍历顺序实现方案
直接修改内层循环逻辑即可实现需求,调整后的完整代码如下:
setlocal enableDelayedExpansion set gs="C:\Program Files\gs\gs9.54.0\bin\gswin64.exe" set options=-dNOPAUSE -q -dBATCH -sDEVICE=pdfwrite %gs% -sDEFAULTPAPERSIZE=a4 -dBATCH for /d %%d in (*) do ( set a= set output=%%d.pdf rem 优先匹配FirstFile前缀的PDF放在输入序列第一位 for %%f in (%%d\FirstFile-*.pdf) do ( set "a=!a!%%f " ) rem 遍历剩余PDF,排除FirstFile前缀的文件避免重复 for %%f in (%%d\*.pdf) do ( set "fname=%%~nf" if not "!fname:~0,9!"=="FirstFile-" ( set "a=!a!%%f " ) ) %gs% %options% -sOutputFile=!output! !a! )
修改说明
- 新增了独立的遍历逻辑优先匹配
FirstFile-*.pdf规则的文件,直接追加到输入参数列表的最开头,满足顺序要求 - 原有全局遍历PDF的逻辑增加了前缀判断,过滤掉已经添加过的FirstFile前缀文件,避免重复输入
- 简化了原有的路径拼接写法,for循环返回的
%%f本身已经包含完整相对路径,无需手动拼接目录和文件名
注意事项
如果单目录下存在多个符合FirstFile-前缀规则的PDF,所有符合规则的文件都会按系统默认排序放在所有输入文件的最前方,如果你确认每个目录只有1个该规则文件,功能完全符合预期。
内容的提问来源于stack exchange,提问作者smlange
相关产品推荐
相关产品推荐

