0

我有一个master.bat文件,其中包含:

call file1.bat
call file2.bat

我希望file2.bat在file1.bat完成执行并生成输出之前不开始运行,但在我的情况下file2.bat运行而不等待file1.bat完成执行。

文件执行时间如下:

file1.bat= 70 sec
file3.bat= 20 sec

编辑1

两个批处理文件的内容是:

文件1.bat

@ECHO OFF
setlocal enabledelayedexpansion
SET "keystring1="
(
FOR /f "delims=" %%a IN (
Source.txt
 ) DO (
ECHO %%a|FIND "Appprocess.exe" >NUL
IF NOT ERRORLEVEL 1 SET keystring1=%%a
FOR %%b IN (App1 App2 App3 App4 App5 App6 ) DO (
ECHO %%a|FIND "%%b" >NUL
IF NOT ERRORLEVEL 1 IF DEFINED keystring1 CALL ECHO(%%keystring1%% %%b&SET   "keystring1="

)))>result.txt

GOTO :EOF

文件2.bat

@echo off
setlocal enabledelayedexpansion

(for /f "tokens=1,2" %%a in (memory.txt) do (
for /f "tokens=5" %%c in ('find " %%a " ^< result.txt ') do echo %%c %%b
))> new.txt 
4

2 回答 2

1

使用“call”运行另一个 bat / cmd 脚本实际上会等待该过程完成,然后再转到下一条语句。因此,在您的“file2.bat”或它所调用的任何内容中发生了其他事情,即允许该进程的一部分继续,而主进程认为 file2.bat 已完成。

您可以尝试使用“开始”命令,该命令可让您指定是否要等到“开始”的任何内容完成后再移动到下一行。默认情况下,它会转到下一行而不等待其进程完成,但您可以指定“/wait”,它不会继续,直到其进程完成。在 DOS / 命令提示符下键入“help start”以获取详细信息。

注意:通常最好在脚本上使用“cmd”扩展名而不是“bat”,因为“cmd”脚本总是在 32 位空间中运行,但“bat”脚本有时会在 16 位空间中运行。

于 2013-11-02T05:09:07.073 回答
1
REM File1.bat
REM DO YOUR FILE STUFF

Call file2.bat

接着

REM File2.bat
REM DO YOUR FILE STUFF

Call file3.bat

然后

REM File3.bat
REM DO YOUR FILE STUFF
REM Done? or call next file to run
于 2013-11-02T05:14:35.027 回答