这是我的代码:
@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
我真的不明白,因为我制作的大多数批处理文件都是这样的。
答案 0 :(得分:2)
批处理脚本一旦完成就会关闭,因为批处理脚本的功能如何。一旦脚本没有更多代码可以运行,窗口就会关闭。如果要保持窗口打开,可以使用pause
命令或从命令提示符运行脚本,而不是双击它。
您在=
命令的末尾缺少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
答案 1 :(得分: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