0

我有两个批处理文件,如下所示,其中file2.bat取决于file1.bat的输出:

文件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 

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

没有得到..为什么会发生..?

4

3 回答 3

3

您看到的行为可能与您描述的不完全一样。

运行此程序,当您看到暂停提示时,然后检查result.txt以查看其中的内容。

如果内容result.txt正确,则按一个键并允许 file2.bat 运行。看看它是否运行正确。

如果失败,则在控制台上捕获错误消息并告诉我们其中的内容result.txtnew.txt

call file1.bat
pause
call file2.bat
pause
于 2013-11-02T07:29:41.153 回答
3

我无法证实你的观察。请查看会话屏幕:

在此处输入图像描述

于 2013-11-02T09:48:52.463 回答
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.txtplease...

于 2013-11-02T16:55:46.483 回答