-3

これが私のコードです:

@echo off
Title Search Providers

:home
Echo [1] Google
Echo [2] Bing
Echo [3] Yahoo
Set /p udefine
If %udefine%== 1 start www.google.com
If %udefine%== 2 start www.bing.com
If %udefine%== 3 start www.yahoo.com

私が作るバッチファイルのほとんどもそのように近いので、私は本当に理解していません。

4

2 に答える 2

2

バッチ スクリプトは終了すると閉じます。これは、バッチ スクリプトがそのように機能するためです。スクリプトで実行するコードがなくなると、ウィンドウが閉じます。ウィンドウを開いたままにしておく場合はpause、ダブルクリックする代わりにコマンドを使用するか、コマンド プロンプトからスクリプトを実行できます。

=コマンドの最後にa がありませんset /p。これが「コマンドの構文が正しくありません」というエラーの原因です。

enterユーザーが何も入力せずにヒットした場合に備えて、文字列を比較するときに引用符、括弧、またはその他の文字を使用することは、一般的に良い考えです。Serenity が述べたように、コマンドを使用するオプションがある場合は、choiceより堅牢であるため、それを使用してください。

引用符で囲む必要がある何かを開始する必要がある場合に備えて""、コマンドの直後に置くことも良い習慣と考えられています。は、最初に遭遇する引用符で囲まれたものをウィンドウ タイトルと見なし、その後のすべてをコマンドと見なします。ご想像のとおり、これによりコードが壊れる可能性があります。startstart

要約すると、次のようになります。

@echo off
title Search Providers
cls

:home
echo [1] Google
echo [2] Bing
echo [3] Yahoo
set /p udefine=

:: Ideally there's some sort of error handling here as well
if "%udefine%"=="1" start "" www.google.com
if "%udefine%"=="2" start "" www.bing.com
if "%udefine%"=="3" start "" www.yahoo.com
pause
于 2015-01-04T05:18:25.797 に答える
0

と入力してみてください<space>1=サインインの後にスペースがあるためですIf。あなたのテストはIf 1== 1 start www.google.comであるため、一致することはありません。

メニューは選択して行うのが最適です。

choice /c 123 /m "Enter Choice"
if  errorlevel 1 if not errorlevel 2 Start www.goggle.com
于 2015-01-04T03:07:56.163 に答える