我的代码有问题。我正在努力制作一个"黑客工具"使用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
我意识到这不会成为" hack"什么,更多的是新奇。问题是,set /p %redo%
和if / else if语句不起作用。他们只是退出了该计划。有人可以解释我做错了什么吗?感谢。
答案 0 :(得分:1)
语法为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
开始计数),长度= 1(因此需要第一个字母)
(不需要else
)