Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理脚本-复杂的循环帮助_Batch File_For Loop - Fatal编程技术网

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错误=/。我今天要考试。