在文件不存在的情况下检查文件而不运行命令

问题描述

我对批处理的局限性感到有些束缚,并不确定编写某些逻辑的最佳方法。我有一个混合的Batch / VBScript用于打印,并确定确认VBScript完成的最佳方法是利用外部文件作为占位符。

逻辑是这样的:

批处理脚本->创建tmpfile->运行VBScript

VBScript->打印作业->删除文件

该部分有效,但是在我的“调用脚本”中,我有一个文件数组,可以使用FOR LOOP进行迭代并打印,但是我不知道如何对逻辑{{1 }}。我已经弄清楚了如何“循环”直到文件不存在,但这使用了WHILE FILE EXISTS DON'T RUN NEXT PRINT JOB语句,并且它们在GoTo中不起作用。我尝试使用“ EXIT / B”,我以为只是退出一个函数,但它只是一起关闭了主脚本。

这是我的“通话脚本”,需要帮助〜

FOR LOOPS

解决方法

问题是使用GoTo w / EXIT /BGoTo仅跳至LINELABEL,而EXIT /B退出PROCESS IE:脚本。 CALL打开SUBPROCESSEXIT /B返回到主PROCESS,允许进一步执行代码。 (与调用外部脚本并关闭它相同)。

这是我最终用来测试的东西,只是在每次数组迭代之后手动删除了文件。

@ECHO OFF
setlocal enabledelayedexpansion



::This is a placeholder file to check if VBScript is running
SET File="%TEMP%\jobrunning"
del /F /Q %File%

::Set arrsize -1
set  arrsize=4
set  arrayline[0]=1A
set  arrayline[1]=2A
set  arrayline[2]=3A
set  arrayline[3]=4A
set  arrayline[4]=5A

::read it using a FOR /L statement
for /l %%n in (0,1,%arrsize%) do (
copy /y NUL %TEMP%\jobrunning.txt >NUL
TIMEOUT 2
CALL :file_exists
echo !arrayline[%%n]!
)
PAUSE

GoTo :EOF

:Is Job Still Running?
:file_exists
   IF EXIST %File% (
       GoTo :file_exists
) ELSE (
EXIT /B
)

相关问答

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