2013-11-02 201 views
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 

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 
+0

呼叫file2.bat。 –

+0

多數民衆贊成多麼我在** Master.bat **使用**調用**函數,這是用於相同的目的..或我沒有得到你Sumit ..你可以解釋更多..? – Sunny

+0

不是我的意思,而是從master.bat中調用file2.bat,而不是在應用程序體系結構中允許從file1.bat調用它;因爲當你從master.bat調用這些文件時,它只是一個單獨的命令,所以master.bat首先執行第一個命令,它最終調用file1.bat,並在執行第一個命令後最終移動到第二個命令,最終不管在這種情況下執行第一個命令的結果如何,都調用file2.bat。 –

回答

1

使用「呼」運行的另一個BAT/CMD腳本實際上並等待過程纔去下一條語句來完成。因此,在「file2.bat」中還有其他事情正在進行,或者是它所調用的任何內容,即在主進程認爲file2.bat已經完成的情況下允許該進程的一部分繼續。

您可以嘗試使用「開始」命令,該命令允許您指定是否等到「開始」完成任何操作後再移至下一行。默認情況下,它會在不等待其進程完成的情況下進入下一行,但您可以指定「/ wait」,並且在其進程完成之前它不會繼續。有關詳細信息,請在DOS /命令提示符處鍵入「help start」。

注:這是通常最好使用「CMD」擴展名的腳本,而不是「蝙蝠」作爲「CMD」腳本始終在32位的空間中運行,但「蝙蝠」腳本運行的某個時候在16位空間。

+0

@ Srutzky..yes..file2.bat有一個循環搜索,通常需要大約60秒才能完成它的執行並將結果寫入output.txt文件..我只是希望file3.bat應該等到file2.bat完全完成其執行...在Windows 7中,**調用**命令正常工作file2.bat ..但在Windows服務器2008 R2 ..不等待file2.bat執行完成。:( – Sunny

+0

我試過* *啓動/等待**方法**文件1.txt ** ..但不工作..請參閱** EDIT1 **問題 – Sunny

+1

@Sunny,1)爲什麼你使用「setlocal enabledelayedexpansion」?我不認爲你需要它。 2)file1.bat中的ECHO語法看起來不正確:有一個左邊的paren,沒有匹配的右邊paren,3)在Windows Server 2008 R2上,file2.bat(好吧,在你發佈的例子中它現在是file1.bat)有沒有在result.txt中填寫正確的數據? –

1
REM File1.bat 
REM DO YOUR FILE STUFF 

Call file2.bat 

然後

REM File2.bat 
REM DO YOUR FILE STUFF 

Call file3.bat 

和在file1.bat和與之相似呼叫file3.bat的在file2.bat的端部的端theenn

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

@ Psycho ..我試過這種方法..但仍然不工作..請參閱** EDIT1 **的問題。 – Sunny