顺序文件执行

时间:2013-11-02 04:02:45

标签: batch-file batch-processing

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

call file1.bat
call file2.bat

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

文件的执行时间如下:

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

EDIT1

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

file1.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

file2.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 

2 个答案:

答案 0 :(得分:1)

使用“call”运行另一个bat / cmd脚本实际上会等到该进程完成后再转到下一个语句。因此,在你的“file2.bat”或其所调用的内容中还有其他内容,即当主进程认为file2.bat已完成时,允许该进程的一部分继续。

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

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

答案 1 :(得分:1)

REM File1.bat
REM DO YOUR FILE STUFF

Call file2.bat

然后

REM File2.bat
REM DO YOUR FILE STUFF

Call file3.bat

和theenn

REM File3.bat
REM DO YOUR FILE STUFF
REM Done? or call next file to run