-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命令,请使用它,因为它更强大。

""在命令之后立即使用也被认为是一种好习惯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
于 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 回答