这是我的代码:
@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
我真的不明白,因为我制作的大多数批处理文件也是如此。
这是我的代码:
@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
我真的不明白,因为我制作的大多数批处理文件也是如此。
批处理脚本一旦完成就会关闭,因为这就是批处理脚本的功能。一旦脚本没有更多代码可以运行,窗口就会关闭。如果要保持窗口打开,可以使用pause命令或从命令提示符运行脚本,而不是双击它。
您=在命令末尾缺少 a set /p,这是导致“命令的语法不正确”错误的原因。
在比较字符串时,通常认为使用引号、括号或其他字符是个好主意,以防用户在enter没有输入任何内容的情况下点击。就像 Serenity 提到的那样,如果您可以选择使用该choice命令,请使用它,因为它更强大。
""在命令之后立即使用也被认为是一种好习惯start,以防万一您需要启动需要用引号括起来的东西;start认为引号中的第一件事是窗口标题,然后是命令。可以想象,这有可能破坏您的代码。
因此,总而言之:
@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
尝试键入<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