双击时,批处理文件闪烁并关闭

时间:2015-01-04 02:57:26

标签: windows batch-file cmd windows-2000

这是我的代码:

@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

我真的不明白,因为我制作的大多数批处理文件都是这样的。

2 个答案:

答案 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