批次“如果此时意外”

时间:2015-11-21 13:29:58

标签: batch-file if-statement

我正在尝试编写一个简单的批处理文件来运行Tracert命令,如果用户希望跟踪本地设备列表,用户可以输入,在这种情况下,userResponse等于y,或者如果他没有,则输入在哪种情况下它等于n。当我启动应用程序时,会出现输入y或n的提示,无论我写什么,都会显示错误消息“如果此时出现意外情况”,屏幕会快速关闭。浏览Stack Overflow一段时间后,我尝试了以下修复:

  • 将用户输入的文本放在引号之间。
  • 添加SETLOCAL ENABLEDELAYEDEXPANSION

但这些解决方案都没有奏效。

这是代码。

@echo off
color A
title Trace Route
SETLOCAL ENABLEDELAYEDEXPANSION

set /p userResponse="Would you like a list of local devices to trace (y/n)? "

if %userResponse%==y (

net view

set /p IPAddress="Enter the IP address that you would like to trace: " 
echo.
set /p addressType="Enter the IP Address type (4 or 6): "

tracert -%addressType% %IPAddress%

PAUSE

) if %userResponse%==n (

set /p IPAddress="Enter the IP address that you would like to trace: " 
echo.
set /p addressType="Enter the IP Address type (4 or 6): "

tracert -%addressType% %IPAddress%

PAUSE
)

我是Stack Exchange的初学者,如果缺少任何信息,请原谅我。我会根据要求快速添加它。

谢谢!

1 个答案:

答案 0 :(得分:1)

您只需在行的开头使用if,而不是

) if %userResponse%==n (

使用

)
if %userResponse%==n (

批次是一种严格的括号。请注意,您也无法使用

if %userResponse%==n
(

开始括号需要与if语句在同一行