批处理脚本-复杂的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\\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”。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...