2017-08-24 15 views
0

私は現在、プログラムを簡単にインストール/アンインストールするための短いコマンドラインユーティリティを作成しています。条件が満たされない場合のエラーメッセージ。バッチ/ cmdファイル内にif exists文をこのコードの中にネストできない

私は現在、私が現在聞いてい

@echo off 
setlocal EnableExtensions 

echo. 
echo 1.Run Program1 
echo 2.Summit else 
echo 3.Summit else 
echo 4.Summit else 
echo 5.Summit else 
echo. 

set /p a= Enter Choice: 

if %a%==1(
if exist program1.cmd(
    rem program1 exists 
    echo "Run program1.cmd" 
    ) else(
    rem program1 does not exist 
    echo "program1 does not exist" 
    )) 
pause 

を書かれた以下のコードを持っている「コマンドの構文が正しくありません。」 Program.cmdが存在するかどうかにかかわらず、なぜ私は理解できません。

バッチ/ cmdファイルでコマンドを実行できない場合、またはWindowsコマンドラインの構文で何かを根本的に誤解しているかどうかを確認してください。

答えて

1

それは巣if/for命令することが可能であるが、cmd非常に非常に非常にスペース好き嫌いある - 1つの以下またはそれ以上のスペースが簡単にスクリプトをクラッシュすることができます。

ここに固定コードがあります。

if "%a%"=="1" (
    if exist program1.cmd (
     rem program1 exists 
     echo "Run program1.cmd" 
     ) else (
     rem program1 does not exist 
     echo "program1 does not exist" 
    ) 
) 

if文の構文を確認してください。また、if %a%==1となる可能性があります(必須ではありません)。は、より安全な比較のためif "%a%"=="1"に変更されています。

引用符を使用するように変更する必要があるのはなぜですか(")?誤ってスペースを入力したとします。 CMDはこれを見るでしょう:

if ==1 (

これはわかりません。

+0

私はあなたのアドバイスを心に持っていきます。この問題は、最後の30分、感謝しています。 – Enos666

関連する問題