1

別のバッチから特定の goto 関数で薄いバッチを開始できるかどうかを知りたいですか?

したがって、別のバッチファイルを開始するだけでなく、「子」バッチで特定の goto オプションを「親」バッチに選択させることもできますか?

4

4 に答える 4

1

親/マザー バッチ ファイルを用意し、パラメーターを子バッチ ファイルに渡すだけです。

お母さんバット

@ECHO OFF
ECHO Here we go
CALL child.bat 3
PAUSE

child.bat

@ECHO OFF

IF "%1"=="1" Goto 1
IF "%1"=="2" Goto 2 
IF "%1"=="3" Goto 3

EXIT

:1

 ECHO 1!
 PAUSE
 EXIT

:2

 ECHO 2!
 PAUSE
 EXIT

:3

 ECHO 3!
 PAUSE
 EXIT

この例は3!をエコーするはずです。これは、親バッチ ファイルがパラメーター3を子バッチ ファイルに渡すためです。

于 2012-10-25T12:45:46.393 に答える
1

はい、しかしそれはハックです。

通常は、呼び出されたバッチ ファイルの助けを借りてこれを行います。

main.bat

call second.bat :theFunction

* 2 番目のバット

goto %1

...
:theFunction

ハックは機能バグを使用します。second.bat と同じラベルのみが必要です。また、second.bat を起動しない場合にのみ機能します。call

main.bat

call :theFunction
echo back in main
exit /b

:theFunction
second.bat 
echo back in the func in main, this line will never reached
exit /b This line will also never reached

second.bat が戻ると、main.bat の次の行に戻りますcall

于 2012-10-25T12:46:44.213 に答える
1

1.bat

call 2.bat /c goto :this
call 2.bat /c call :that

.

2.bat

if "%1"=="/c" shift & shift & %2 %3
goto :eof

:this
echo This!
goto :eof

:that
echo That!
goto :eof

編集:私の元の投稿は最も正しいものでした。しかし、私は自分の間違いを修正しました。

ダブルシフトして %1 と %2 を左に移動し、渡された他の変数を %1 と %2 の位置に移動します。次に %2 と %3 を実行します。これは、行の実行/解釈が完了するまでシフトの効果が有効にならないためです。

于 2012-10-26T07:14:50.690 に答える
0

呼び出しているバッチファイルで、これを一番上に置きます

if not %1=="" goto :%1

あなたがそれを呼び出すために使用しているバッチファイルで

call b.bat labelname

明らかに、これは何をしようとしているのかによって制限されますが、基本的な機能は機能します。

于 2012-10-25T13:35:50.250 に答える