我有两个批处理文件,其中 file2.bat 依赖于 file1.bat 的输出:
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
file1.bat 通常需要60秒才能完成执行。
在 master.bat 文件中,我调用以下两个文件:
call file1.bat
call file2.bat
但 file2.bat 并未等待 file1.bat 完成执行。
即便如此,我尝试在 file1.bat 中调用 file2.bat ,如下所示,但仍然没有等待 file1.bat 获取完成:
@ECHO OFF
setlocal enabledelayedexpansion
SET "keystring1="
(
FOR /f "delims=" %%a IN (
Source.txt
) DO (
ECHO %%a|FIND "HsvDataSource.exe" >NUL
IF NOT ERRORLEVEL 1 SET keystring1=%%a
FOR %%b IN (EUHFMPROD USHFMPROD TL2TEST GSHFMPROD TL2PROD GSARCH1213 TL2FY13) DO (
ECHO %%a|FIND "%%b" >NUL
IF NOT ERRORLEVEL 1 IF DEFINED keystring1 CALL ECHO(%%keystring1%% %%b&SET "keystring1="
)))>file2.txt
GOTO :EOF
call file1.bat
我也尝试过开始选项,但没效果。:
start file1.bat /wait
call file2.bat
没有......为什么会发生......?
答案 0 :(得分:3)
您看到的行为可能与您描述的不完全相同。
运行此选项,当您看到暂停提示时,请检查result.txt
以查看其中的内容。
如果result.txt
的内容正确,则按一个键并允许file2.bat运行。看它是否正确运行。
如果失败,则在控制台上捕获错误消息并告诉我们result.txt
和new.txt
call file1.bat
pause
call file2.bat
pause
答案 1 :(得分:3)
我无法证实你的观察。请查看会话屏幕:
答案 2 :(得分:1)
对不起。你怎么知道你的问题是你的想法?有一种非常简单的方法来测试它。在致电master.bat
之前在file1.bat
插入以下行:
echo "master.bat" started at %time% > logfile.txt
并在九个批处理文件中的每一个的开头插入以下行:
echo "%~NX0" started at %time% >> logfile.txt
编辑:并在九个批处理文件中的每一个的末尾插入以下行:
echo "%~NX0" ended at %time% >> logfile.txt
然后运行您的计划并发布logfile.txt
的内容,请...