mbu*_*nch 3 batch-file set pdftk
我正在制作一份pdf文件列表.目录中有2480个pdf.我想把前半部分放在var l1中,第二部分放在var l2中.
for /r %%f in (*_*.pdf) do (
set c=%%~nf
set c=%c:~5,4%
if %c% LEQ 1240 ( set l1=%l1% %%~nf.pdf )
if %c% GEQ 1241 ( set l2=%l2% %%~nf.pdf )
)
pdftk %l1% cat output group1.pdf
pdftk %l2% cat output group2.pdf
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种组合,但不能让它发挥作用.上述脚本是我需要完成的基本前提.我正在使用pdftk来合并文件.
%c%解析行时会扩展经典问题 - 等等,并且一次解析整个FOR循环.因此循环中的值是常量 - 循环开始之前存在的值.(可能没有价值).
修复很简单 - 您需要延迟扩展.您可以在SET的内置帮助中阅读.键入HELP SET或SET /?从命令提示符处.重要的是大约2/3下降,从"最后,添加了对延迟环境变量扩展的支持......"
您需要先使用SETLOCAL ENABLEDELAYEDEXPANSION启用延迟扩展,然后才能使用它.
setlocal enableDelayedExpansion
for /r %%f in (*_*.pdf) do (
set c=%%~nf
set c=!c:~5,4!
if !c! LEQ 1240 ( set l1=!l1! %%~nxf )
if !c! GEQ 1241 ( set l2=!l2! %%~nxf )
)
pdftk %l1% cat output group1.pdf
pdftk %l2% cat output group2.pdf
Run Code Online (Sandbox Code Playgroud)