我正在使用Ghost Script操作PDF。我使用数字变量作为参数。我的输入文件名为“ x.pdf”。我希望输出文件为“ x-processed.pdf”。当前,我有上面提到的代码:
gswin64c.exe -q -dNOPAUSE -dBATCH -dSAFER -dPDFA=2 -dPDFACompatibilityPolicy=1 -dSimulateOverprint=true -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dEmbedAllFonts=true -dSubsetFonts=true -dAutoRotatePages=/None -dColorImageDownsampleType=/Bicubic -dColorImageResolution=150 -dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=150 -dMonoImageDownsampleType=/Bicubic -dMonoImageResolution=150 -sOutputFile=%1%-processed.pdf -c .setpdfwrite -f %1
因此,输出文件名当前为inputfilename.pdf-processed.pdf
。
我要删除该扩展名。但是我不知道怎么做。
我尝试在此处使用变量替换形式:http://cplusplus.bordoon.com/cmd_exe_variables.html
也就是说,我已将-sOutputFile=%1-processed.pdf
更改为-sOutputFile=%~pn1-processed.pdf
那行不通。
因此,我尝试着首先研究如何使用这些替代方法。我试图通过通过regedit添加此命令来将所选文件名复制到剪贴板:
cmd.exe echo "%~n1"|clip
那行不通。
但是,如果我简单地说:
cmd.exe /c echo "%1"|clip
这样就可以正常工作,并将具有扩展名的文件路径复制到剪贴板。
我真的很困,因为我不明白自己在做什么错。请帮助我。
无错误消息。完全没有消息。什么都没发生。
答案 0 :(得分:0)
实际上,从上下文菜单中拧紧Shell命令时只有很少的变量可用。
更多信息在https://superuser.com/a/473602中。
因此,唯一的方法是使用上述代码创建批处理文件:
C:\Program Files (x86)\gs\gs9.27\bin\gswin32c.exe" -q -dNOPAUSE -dBATCH -dSAFER -dPDFA=2 -dPDFACompatibilityPolicy=1 -dSimulateOverprint=true -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dEmbedAllFonts=true -dSubsetFonts=true -dAutoRotatePages=/None -dColorImageDownsampleType=/Bicubic -dColorImageResolution=150 -dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=150 -dMonoImageDownsampleType=/Bicubic -dMonoImageResolution=150 -sOutputFile="%~dpn1-processed.pdf" -c .setpdfwrite -f "%~1"
并添加以下命令REG_SZ
行,而不是直接放置命令:
"Path_to_bat_file/file_name.bat" "%1"
它应该可以工作。