Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 如果出现错误,请批处理文件_If Statement_Batch File_Cmd_Batch Processing - Fatal编程技术网

If statement 如果出现错误,请批处理文件

If statement 如果出现错误,请批处理文件,if-statement,batch-file,cmd,batch-processing,If Statement,Batch File,Cmd,Batch Processing,好的,我正在做一个项目,我正在做这件事,我在confirmOne中得到了if语句,它给了我一个在这个时候没有预料到的结果。请帮助 许多错误的“You got to here!”消息是我试图调试它时发出的。我真的很快就需要它。请帮助。我也尝试过删除部分,但它似乎仍然不起作用。如果您看到任何其他错误,请告诉我,因为我需要所有可以得到的帮助。谢谢 :grabInput echo Please enter the username of the user you wish to access. REM

好的,我正在做一个项目,我正在做这件事,我在confirmOne中得到了if语句,它给了我一个在这个时候没有预料到的结果。请帮助

许多错误的“You got to here!”消息是我试图调试它时发出的。我真的很快就需要它。请帮助。我也尝试过删除部分,但它似乎仍然不起作用。如果您看到任何其他错误,请告诉我,因为我需要所有可以得到的帮助。谢谢

:grabInput
echo Please enter the username of the user you wish to access.

REM - } End Echoing Information/Main Menu | Grab Input {

set /p result=
goto correctName

REM - } End Grab Input | Process Input {

:correctName
set /p input=%result%
goto confirmOne
:confirmOne
echo Got to confirmOne
pause
if %input%==[] (
  pause
  cls
  echo Oops! Looks like you didn't enter anything! Try Agian!
  echo.
  echo ................................................................................
  echo.
  goto grabInput
) ELSE (
  goto confirmTwo
)


:confirmTwo
echo Got to ConfirmTwo
pause
if %input%==~help (
  goto helpMenu
) ELSE (
  goto confirmThree
)

:confirmThree
echo Got to ConfirmThree
if %input%==~info (
  goto infoMenu
) ELSE (
  goto swapDrive
)

好的,如果您没有为
%input%
输入任何内容,那么您的
if
语句看起来就像
if=[](

您的
if
语句应该类似于
if[%input%]=[](


我还看到了很多不必要的代码,您应该查看一下您的脚本。

批处理始终适用于字符串

如果%input%=[],当%input%设置为[nothing](这是您尝试检测的内容)时,使用语句
,批处理将[nothing]替换为
%input%
,并获取

IF ==[] (
因为“(”不是比较运算符,所以会混淆

[]
不是什么魔咒。它是一种检测参数存在的旧方法,如果参数不存在[%1]将等于[]。当变量包含空格或其他字符时,它不起作用

if "%var%"=="" is better
if not defined var is better still
注意

set /p var=
不会将
var
设置为[nothing],只需按
enter
,它将保持
var
不变

因此

set var=something
set /p var=
var
设置为
something

set "var="
set /p var="Some prompt "
if not defined var echo VAR is not defined
var=
周围的引号确保,如果行上有尾随空格,则
var
不会设置为[某些空格]

除此之外,序列

goto somelabel
:somelabel
(REM线不相关)是多余的

同样地,在

if somecondition (goto somewhere) else (goto somewhereelse)
:somewhereelse
else
条件是多余的

仅批处理通知
:标签
作为
转到
呼叫的目的地。否则,只需通过它发现的任何
:标签
直接收费,就好像它们是备注语句一样