0

次のように、 file2.batがfile1.batの出力に依存する2 つのバッチ ファイルがあります。

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ファイルでは、上記の 2 つのファイルを次のように呼び出しています

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.txt失敗した場合は、コンソールのエラー メッセージをキャプチャし、内容を教えてください。new.txt

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

あなたの観察を確認できません。セッション画面を見てください:

ここに画像の説明を入力

于 2013-11-02T09:48:52.463 に答える