Batch file 批处理脚本-复杂的循环帮助
好吧,下面是真相。。。在过去一周左右的时间里,我一直在研究这个解决方案,我想我已经解决了,但似乎有点不对劲。。。这是我的代码,我将给出逻辑分解:Batch file 批处理脚本-复杂的循环帮助,batch-file,for-loop,Batch File,For Loop,好吧,下面是真相。。。在过去一周左右的时间里,我一直在研究这个解决方案,我想我已经解决了,但似乎有点不对劲。。。这是我的代码,我将给出逻辑分解: ::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\
::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%"
)
)
)
将文件从新文件夹移动到打印文件夹。对于打印文件夹中的每个文件,使用foxit打印它,对于在PRNJOBS.VBS命令中找到文件名的每个条目,将文件移动到finish文件夹,并回显日志条目以获得成功,然后如果文件仍然存在于其旧目录中,则将文件移动到errorfiles文件夹并回显日志条目以获得打印错误
脚本退出时没有任何错误,但第22行似乎是脚本退出的位置。我检查了这些文件,但它们从未被移动到%finish%目录,所以它必须在第22行被删除 如果将文件发送到打印队列,请运行
C:\WINDOWS\system32\PRNJOBS.vbs -l
在CMD中,您将看到该命令如何发送其标准输出。这可能是问题的原因:
MOVE /Y "%%B" "%finish%\%%~nxf"
应该是
MOVE /Y "%%B" "%finish%\%%~nxF"
MOVE/Y“%%B”“%finish%\%%~nxF”
由于循环变量名称区分大小写,并且循环变量(除了
%%A
)声明为%%F
,因此是否存在问题?有什么问题?错误消息是什么?脚本退出时没有任何错误,但第22行似乎是脚本退出的位置。我检查了这些文件,但它们从未被移动到%finish%目录,所以它必须在第22行被删除。你在上看到的ECHO是什么?LAWL!天啊!Noob错误=/。我今天要考试。