批处理脚本 Mix Forfiles Cmd 打印 PDF

Batch script Mix Forfiles Cmd to print a PDF

我受困于这个脚本

echo off
SET pathAdobe="C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe"
SET pathDestination=T:\
cd %pathDestination%

(1)
forfiles /P %pathDestination% /M *8.pdf /D +0 /C "cmd /c echo @PATH"
(2)
"C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe" /o /h /s /t "%pathDestination%\pdf8.pdf" "MyPrinterName"


pause

(1) 工作正常,我根据我的 forfiles 得到了一份 pdf 列表

(2) 工作正常,打印我的文件

(3) 但是当我想混合 2 个第一步时,它并没有像我想要的那样工作

forfiles /P %pathDestination% /M *8.pdf /D +0 /C "CMD /C "%pathAdobe%" /o /h /s /t @PATH"

我收到这个错误: 错误:参数或选项无效 - « Files\Adobe\Acrobat »

我尝试用 ^ " \ 转义但不改变结果

找不到解决方案!

感谢您能给我的任何帮助:)

J

您的问题是您在错误的位置包含了双引号,并且这些双引号需要转义。您可以使用反斜杠 (\") 或使用它们的十六进制字符代码 (0x22) 来转义它们.

反斜杠示例:

@Echo Off
Set "pathAdobe=%ProgramFiles%\Adobe\Acrobat DC\Acrobat\Acrobat.exe"
Set "pathDestination=T:\"
CD /D "%pathDestination%" 2> NUL || Exit /B
%SystemRoot%\System32\forfiles.exe /M "*8.pdf" /D 0 /C "%SystemRoot%\System32\cmd.exe /D /C \"\"%pathAdobe%\" /o /h /s /t @Path \"MyPrinterName\"\""
Pause

十六进制字符示例:

@Echo Off
Set "pathAdobe=%ProgramFiles%\Adobe\Acrobat DC\Acrobat\Acrobat.exe"
Set "pathDestination=T:\"
CD /D "%pathDestination%" 2> NUL || Exit /B
%SystemRoot%\System32\forfiles.exe /M "*8.pdf" /D 0 /C "%SystemRoot%\System32\cmd.exe /D /C 0x220x22%pathAdobe%0x22 /o /h /s /t @Path 0x22MyPrinterName0x220x22"
Pause