好的,所以这里的低点......过去一周左右一直在研究这个解决方案,以为我把它弄下来但似乎有些不对......这是我的代码,我会给出逻辑细分:< / p>
::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中,您将看到该命令如何发送其标准输出。
答案 0 :(得分:2)
这可能是导致问题的原因:
MOVE /Y "%%B" "%finish%\%%~nxf"
应该是
MOVE /Y "%%B" "%finish%\%%~nxF"
因为循环变量名称区分大小写,并且您的循环变量(%%A
除外)被声明为%%F
。