问题描述
|
好的,这是一个缺点...在过去的一周左右的时间里,我一直在研究此解决方案,以为我已经解决了它,但是似乎有些不对劲...这是我的代码,我将给出逻辑细分:
::Programs
SET fox=C:\\Program Files\\Foxit Software\\Foxit Reader\\Foxit Reader.exe
SET spool=C:\\WINDOWS\\system32\\PRNJOBS.vbs
::Directories
SET new=C:\\PDF\\New
SET printing=C:\\PDF\\Printing
SET finish=C:\\PDF\\Finish
SET errorfiles=C:\\PDF\\Error Files
::Important Files
SET syslog=C:\\PDF\\Script_Messages\\PrintLOG.txt
SET emaillog=%tmp%\\PrintLOG.txt
SET errlog=C:\\PDF\\Script_Messages\\ErrorLOG.txt
SET emailerr=%tmp%\\ErrorLOG.txt
CD \"%new%\"
MOVE /Y \"*.pdf\" \"%printing%\"
CD \"%printing%\"
FOR %%F IN (*.*) DO (
START \"\" /B \"%fox%\" -p \"%%~fF\"
FOR /F \"USEBACKQ tokens=1*\" %%A IN (`CSCRIPT \"%spool%\" -l ^| FIND /I \"%%F\"`) DO (
MOVE /Y \"%%B\" \"%finish%\\%%~nxf\"
ECHO %%~nxF>>\"%syslog%\"
ECHO %%~nxF>>\"%emaillog%\"
IF EXIST \"%%~fF\" (
MOVE /Y \"%%~fF\" \"%errorfiles%\\%%~nxF\"
ECHO *****ERROR PRINTING FILE***** %%~fF>>\"%errlog%\"
ECHO *****ERROR PRINTING FILE***** %%~fF>>\"%emailerr%\"
)
)
)
将文件从NEW文件夹移动到PRINTING文件夹。对于打印文件夹中的每个文件,请使用foxit进行打印,并在PRNJOBS.VBS命令中找到文件名的每个条目中,将文件移至完成文件夹,并回显日志条目以获取成功,然后该文件是否仍然存在在其旧目录中,将文件移至errorfiles文件夹,并回显整个日志以获取打印错误。
脚本退出时没有任何错误,但似乎在第22行是脚本退出的地方。我检查了文件,但它们从未移至%finish%目录,因此必须在第22行将其杀死。
如果将文件发送到打印队列,请运行
C:\\WINDOWS\\system32\\PRNJOBS.vbs -l
在CMD中,您将看到该命令如何发送其标准输出。
解决方法
这可能是问题的原因:
MOVE /Y \"%%B\" \"%finish%\\%%~nxf\"
它应该是
MOVE /Y \"%%B\" \"%finish%\\%%~nxF\"
因为循环变量名称区分大小写,并且循环变量(“ 4”以外的变量)声明为“ 5”。