2017-03-25 16 views
0

私はかなりプログラミングに新しいですが、私は過去にかなりのWeb開発を行ってきました。最初のプログラムはちょっと考えていました。プログラムの終了を希望するかどうかを尋ねるコマンドプロンプトUIから構成されています。個人的に気にしないバックグラウンドタスクをシャットダウンした後です。ここでバッチファイルが> 1入力後に閉じる

は、これまでのコードです:

:start 
set /p "cho=>" 
if %cho%==Y goto yes 
if %cho%==y goto yes 
if %cho%==n goto eof 
if %cho%==N goto eof 

:yes 
echo If you need help type "hlp". If you don't type "cont". To close type 
"end" 
set /p "yesInput=>" 
if %yesInput%=hlp goto hlp 
if %yesInput%=cont goto cont 
if %yesInput%=end goto end 

:hlp 

TASKLIST 
echo To Return type "cont" 
set /p "hlpInput" 
if %hlpInput%=cont goto cont 
if else echo Error 
:cont 


:end 
goto eof 

はEDIT:バックグラウンドタスクがGoogleCrashHandler64あり、GoogleCrashHandler

答えて

0
if %yesInput%=hlp goto hlp 

は、比較演算子がない=(繰り返し何度も)、==ある

(btw-if /i ...は大文字と小文字を区別しません)

set /p "hlpInput" 

これを他のset /pコマンドと比較してください。

if else echo Error 

あなたの意図は「そうでなければ」です。以前のテストが成功した場合、実行は指示どおりにラベルに転送されます。したがって、この命令を読み上げる場合、条件を「それ以外」にしてテストする必要はありません。

ifは非常に簡単です。それはcaseのようなものではありません。プロンプトから、文書化のために/? `を参照してください。一般的な形式は

場合booleancondition(dothis)他がelse状態である場合、または括弧にのみ必要とされる(dothat)

ある又は dothat あるマルチライン命令を(dothis場合code blockとして知られている)。また、(の開口部は、ifと同じ物理行でなければならず、) else (はすべて1つの物理ライン上になければなりません。

キーボードからの入力をテストする場合、ユーザーはスペースまたはカンマを含む文字列を入力することがあります。それが到達するまで、そのバッチがsiply私逐次命令を実行しますのでご注意ください引用符は値が単一の「トークン」

として解釈される原因として構文

if "string"=="another string" ... 

を使用するように(誰にでもなく)安全なFOREがありますgotoまたはファイルの末尾(ただし、callによって迂回することができます)。ラベルは単にマーカーであり、他の言語と同様に「手続きの終了」を示すものではありません。その結果、特定のgoto命令を挿入しない限り、バッチはラベルを辿って見つかった命令を実行するだけです。

特別な指示goto :eofはファイルの最後に送られます。コロンはが必要ですです。

+0

批判よりもずっと助けてくれてありがとう。 – radker

+1

バッチはSOジャングルの非常に文明化されたエリアです。 – Magoo

関連する問題