我的代码有问题。我试图用tree命令制作一个“黑客工具”。这是我的代码:
@echo off
title $userOne ProxyMatrix
color a
echo Hello $userOne,
echo Please enter search function for today's commands:
set /p %commands%=""
:redo
echo Specify Storage Device
set /p %drive%=""
title $userOne ProxyMatrix: Running on %drive% drive at %random% bits per nano
color C
tree %drive% /f
:runagain
color a
echo Run again?
set /p %redo%=""
if %redo%="yes" goto redo
else if %redo%="y" goto redo
else if %redo%="Y" goto redo
else if %redo%="Yes" goto redo
else if %redo%="no" goto end
else if %redo%="No" goto end
else if %redo%="n" goto end
else if %redo%="N" goto end
else echo Thats not a valid answer!
pause
goto runagain
:end
echo Thank you for choosing InGen, inc.
pause我意识到这不会“黑”任何东西,更多的是一种新奇的东西。问题是,set /p %redo%和if/else语句不能工作。他们刚刚退出了这个项目。有人能解释我做错了什么吗?谢谢。
发布于 2015-07-09 17:20:10
语法是set /p variable=prompt。
而不是set /p %redo%="",写set /p redo=""或者更好的set /p "redo="
编辑
您的if语法也被破坏了。
语法是:if value1==value2 command或if value1==value2 (command1) else (command2)
“最佳做法是将比较的两边用引号括起来(避免使用空值或包含空格的语法错误):
if "%variable"=="value" echo yes我会把守则缩短为:
set /p %redo%=""
if /i "%redo:~0,1%"=="y" goto redo
if /i "%redo:~0,1%"=="n" goto end
else echo Thats not a valid answer!/i告诉if忽略大写
%variable:~0,1%的意思是“取一个以第一个字母开头的子字符串(计数从0开始)和length=1 (所以它接受第一个字母)。”
(不需要else )
https://stackoverflow.com/questions/31323951
复制相似问题