2017-09-15 4 views

答えて

2

scriptname.cmdcmd /cと呼び出すことができます。そうすれば、祖先のコンソールプロセスではなく、cmd /cの呼び出しが終了します。exit

Test1.bat:

@echo off & setlocal 

echo Exiting. 
exit 0 

Test2.bat:Test2.batの

@echo off & setlocal 

echo Invoking Test1.bat 
cmd /c Test1.bat 

echo Still running! 

出力:

Test1.batを呼び出す
終了します。
まだ実行中です!

...コンソールウィンドウは開いたままです。

+0

ありがとう、 'cmd/c'はこれをうまく処理したので、' call'を使用してスキップします。 – EquipDev

+0

Test1.batが保持したい環境変数を設定する場合、スクリプトが現在のシェル内で実行されない限り、設定されません。これは 'CALL'が可能にするものです。あなたはその機能を失います。 .batスクリプトは 'EXIT/B'で修正する必要があります。 – lit

0

終了コードを0に設定しようとしましたか?このようなもの?

command && exit 0 

私はcmdコマンドに関する多くの経験はありませんが、動作するはずです。

+0

この構成では、端末は依然として終了します。 – EquipDev

+0

それを使ってbatファイルを作成し、終了の前に起動しても? –

+0

私が必要とするのは、スクリプトをカプセル化する呼び出しです。答えの 'cmd/c'がそのトリックを行います。 – EquipDev

関連する問題