2017-02-03 6 views
0

私が書いているバッチスクリプトにこの小さな問題があります。Q:EXIST/IFがバッチスクリプトに存在しない場合

:Delete_File 
cls 
title Delete File 
echo Welcome to the Utility Delete File! 
echo Type the name of the file you want to delete: 
echo. 
set /p var= 
echo. 
echo I'm checking the existance of the file... 
ping 192.0.2.2 -n 1 -w 2000>nul 
if EXIST %var% del %var% 
if NOT EXIST %var% echo The file doesn't exist. Check for errors and try again. 
ping 192.0.2.2 -n 1 -w 1500>nul 
set /p answer=1 - Go to Menu _ 2 - Go to Exit 
if %answer%==1 goto Menu 
if %answer%==9 goto Exit 

ので、問題は、ファイルが設立されたときに、それが削除されるということですが、それは12日、文字列中にメッセージが表示されます。 私は質問の不正な構文のために、本当に申し訳ありませんが、私は新たなんだ

echo The file was successfully deleted! 
echo Redirecting you to the Menu... 
ping 192.0.2.2 -n 1 -w 2000>nul 
goto Menu 

...メニューにリダイレクトしています!ファイルが正常に削除されたメッセージ」を示すことが必要である。 私はすべての応答をありがとうを取得 フェデリコ

+0

12行目を意味します。以下の答えはあなたの問題を解決しますが、使用していたロジックについて考えてみてください。ラインをフリップフロップします。 – Squashman

答えて

0
if exist %var% (
    del %var% 
) else (
    echo The file doesn't exist. Check for errors and try again. 
) 
+0

私はXPの2001年以来、私はelse文を持っていないので、それを言うのを忘れてしまった... –

+1

@ F.Tinelli、Windows XPは確かに 'IF ELSE'機能を持っています。 – Squashman

+1

@ F.Tinelli、 'else'節は' NT'に含まれていました。あなたはそれを持っています。 –

0

あなたは他の問題を持っている場合、あなたは次のように、複数のラベルを使用することができます!。

if NOT EXIST %var% goto :DeleteFileMissing 
del %var% 
Goto :DeleteFileContinue 

:DeleteFileMissing 
echo The file doesn't exist. Check for errors and try again. 

:DeleteFileContinue 
1

バッチは実際にこの種のプロジェクトを実行するのに最適な言語ではありませんが、IF EXISTとIF NOT EXISTの並びを逆にする必要があります。 IF EXIST行のファイルを削除すると、そのファイルは存在しなくなり、IF NOT EXISTテストの直後に成功します。

関連する問題