2016-05-02 1 views
3

私はバッチファイルを持っています。私の目標は一度だけ使用することです。さらに実行すると、このバッチファイルは何もしません。この作業を解決するために、If Existを使用して、バッチスクリプトの最後に作成されたファイルを確認することにしました。 は、だから私は、この(私が正しいディレクトリに移動します)持っている一番最初に:ファイルがすでに存在する場合、バッチファイルの先頭でバッチ処理を終了するにはどうすればよいですか?

If Exist "file.txt" (
goto exit 
) 

を私は、ファイルの末尾にexitマーカーを設定します。

代わりの方法は分かりますが、私はこの問題の解決策を望んでいます。

答えて

5

後藤manualは言う:

直接バッチプログラムは、ラベルの行にジャンプします。

構文 GOTOラベル

私は、Windowsのコマンドが同じ名前で存在として名前がexitすべきではない(私は用語マーカーを使用しないこと)ラベルを推測。あなたはこの問題を回避するには

if exist "file.txt" goto :exit 

マインドコロン、これを使用することですラベルとしてexitを使用したい場合は、

:exitprocess 

にラベルを変更し、しかし

if exist "file.txt" goto exitprocess 

を行いますgotoに、exit

というラベルがあることを確認します。

礼儀:回避策のための@somethingdark

+0

彼は 'goto:exit'と言うことができるはずです。しかし私は同意します。一般的には、コマンドと同じ名前のラベルを避けてください。 – SomethingDark

+0

私はそれを試してみてください(明日)もしあなたが最高の答えを与えるでしょう。 –

+0

@EliR:ありがとう:Dそれはうまくいくはずです – sjsam

5

MicrosoftはGOTOラベルEOF(ファイルの終わり)が事前に定義されており、明示的に定義されてはいけないことにより、バッチファイルやバッチサブルーチンの処理を終了する

goto :EOF 

を使用する可能性のために説明しますバッチファイル。

バッチファイルやバッチサブルーチンの処理を終了する別の方法は、パラメータ/BでコマンドEXITを使用している、すなわち

exit /B 

これは違い上を作るだけで、バッチ処理全体ではなく、コマンド処理を終了EXITを使用してバッチサブルーチンを終了するか、別のバッチファイルからバッチファイルを呼び出す場合に使用します。

両方のラインが現在のバッチ処理を出る上結果とコマンド処理自体はバッチで呼び出しプロセスに戻る

このタスクのいずれか

if exist "file.txt" goto :EOF 

又は

if exist "file.txt" exit /B 
だから、使用することができますファイルが直接呼び出されたため、コマンドプロセスも終了しました。

+0

修正をいただきありがとうございます。また、私は "exit"のスペルを間違えて、代わりに "exist"をIf existブロックに入れました。彼が最初に答えたので、私は他の人に最善の答えを与えましたが、あなたの答えはまったく良いものでした。 –

関連する問題