2016-03-31 11 views
1

次のコードを実行すると、「taskkill was expected」と表示されます。 %stop%の値を設定する前にプログラムが終了します。このエラーを修正するにはどうすればよいですか?バッチコマンドが期待されない

@echo off 
set ucs=ucs.exe 
cls 
echo. 
echo Check %ucs%... 
tasklist /FI "IMAGENAME eq %ucs%" 2>NUL | find /I /N "%ucs%">NUL 
if %errorlevel%==0 (
echo %ucs% is running! 
echo You need to stop it before editing ucsdb 
echo 1 - Stop 
echo 0 - Menu 
set /p "stop=Stop %ucs%?" 
if %stop%==1 taskkill /im %ucs% /t && goto sqlitebrowser 
if %stop%==0 goto sqlitemenu 
if not %stop%==1 if not %stop%==2 echo Option "%stop%" not exist! && timeout /t 2 /nobreak >NUL && goto sqlitemenu 
) ELSE (
echo %ucs% is not running 
echo Loading SqliteBrowser... 
timeout /t 2 /nobreak >nul 
goto sqlitebrowser) 

コード編集:!!

setlocal EnableDelayedExpansion 
cls 
echo. 
echo Check %ucs%... 
pause 
tasklist /FI "IMAGENAME eq %ucs%" 2>NUL | find /I /N "%ucs%">NUL 
if %errorlevel%==0 (
echo %ucs% is running! 
echo You need to stop it before editing ucsdb 
echo 1 - Stop 
echo 0 - Menu 
set /p "stop=Stop %ucs%?" 
if !stop!==1 taskkill /im %ucs% /t && goto sqlitebrowser 
if !stop!==0 goto sqlitemenu 
if not !stop!==1 if not !stop!==0 echo Options "!stop!" not exist! && timeout /t 2 /nobreak >nul && goto sqlitemenu 
... 

ない場合は停止== 1でない場合はオプションエコー== 0を停止!! "ストップ!"存在しない!が正しく

+1

変数 '%stop%'が定義されていないことを確信しています... – aschipfl

+2

[バッチファイルの遅延展開の例]の可能性があります(http://stackoverflow.com/questions/10558316/example-of- delay-in-batchファイル) –

+0

%stop%の値を設定する前に、プログラムが終了します。 – Blank517

答えて

0

を働く問題ありませんが、あなたがここに左括弧を持っていることです。

if %errorlevel%==0 (

これは、すべてが1行にあったかのように閉じ括弧までの全てのコマンドを処理していることを意味します。環境変数は直ちに展開されます。特に、%stop%を展開しようとします。しかし、あなたはまだそれを定義していないので、空の文字列に展開し、あなたのif文は次のようになります。あなたがする必要がどのような

if ==1 taskkill [etc...] 

は使用が拡大を遅らせています。 the linkDennis van Gils' commentから読んでください。

+1

リンク私は常に人をリダイレクトします:[ss64](http://ss64.com/nt/delayedexpansion.html) –

+0

これはうまくいきました!しかし、もしそうでなければ、停止してください!== 1もしそうでなければ!stop!== 2 echoオプション "!stop!"存在しない! 'は常にこの出力で実行されます:Option "!stop!"存在しない! – Blank517

+0

@ Blank517スクリプトの先頭に 'setlocal EnableDelayedExpansion'を追加しましたか? –

関連する問題