我的批处理文件跳过特定的循环并且只执行某些循环(它只执行前三个循环并忽略其余循环)。
我尝试重写批处理文件,将新代码合并到我编写的旧的现有批处理文件中,但我无法使其正常工作。
echo 1. Login
echo 2. Exit
echo.
set /P M = Command :
IF M == 1 GOTO 1
:1
cls
echo Login
echo.
Set Pass1 = MCTh3sn3r
Set /P Pass = Enter Password :
IF Pass == %Pass1% GOTO 2
:2
cls
echo.
echo Login Successful GOTO 4
:3
cls
echo.
echo Incorrect Password
:4
echo.
echo 1. Shutdown (S)
echo 2. Reboot (R)
echo 3. Logoff (L)
echo 4. Task Manager (TM)
echo 5. Command Prompt (CP)
echo 6. File Locker (FL)
echo. Set /P Choice = Command :
IF Choice == "S" GOTO 5
IF Choice == "R" GOTO 6
IF Choice == "L" GOTO 7
IF Choice == "TM" GOTO 8
IF Choice == "CP" GOTO 9
IF Choice == "FL" GOTO 10
:5
cls
echo.
echo System will now shutdown
Timeout /t 5
Shutdown /s
GOTO End
:6
cls
echo.
echo System will now reboot
timeout /t 5
Shutdown /r
GOTO End
:7
cls
echo.
echo System will now logoff
timeout /t 5
Logoff
GOTO End
:8
gpupdate /force
gpupdate /force
gpupdate /force
gpupdate /force
start taskmgr
GOTO End
:9
gpupdate /force
gpupdate /force
gpupdate /force
gpupdate /force
start cmd
GOTO End
:10
(
if EXIST "PrivateFolder" goto
11
if NOT EXIST Locker goto 12
:13
echo Are you sure you want to
lock the folder (Y/N) ?
set /p Choice = Command :
IF Choice == "Y" goto 14
IF Choice == "y" goto 14
IF Choice == "N" goto 15
IF Choice == "n" goto 15
echo Invalid Choice goto 13
:16
ren Locker "PrivateFolder"
attrib +h + s "PrivateFolder"
echo Folder Locked GOTO End
:11
echo Enter password to unlock
file :
set /p Pass = Password :
IF NOT %Pass% == MCTh3sn3r goto
17
attrib -h -s "PrivateFolder"
ren "PrivateFolder" Locker
echo File locked successfully.
GOTO End
:17
echo Invalid password.
GOTO End
:12
md Locker
echo Locker created
successfully.
GOTO End
)
:End
Exit
答案 0 :(得分:0)
好吧,让我们从TOP开始。
这组代码有三个错误。
echo 1. Login
echo 2. Exit
echo.
set /P M = Command :
IF M == 1 GOTO 1
:1
此代码应该看起来像这样。
echo 1. Login
echo 2. Exit
echo.
set /P M=Command :
IF "%M%"=="1" (
GOTO 1
) else (
GOTO END
)
:1
您在下一组代码中犯了同样的错误。不确定为什么选择将百分比符号用于一个变量而不是另一个变量。同样,你需要关闭空格,对所有变量使用百分比符号,你的GOTO将转到标签2,无论如何你需要一些其他代码来分支。
cls
echo Login
echo.
Set Pass1 = MCTh3sn3r
Set /P Pass = Enter Password :
IF Pass == %Pass1% GOTO 2
:2
再次,使用我最好的编码实践,我会像这样编码。
:1
cls
echo Login
echo.
Set Pass1=MCTh3sn3r
Set /P Pass=Enter Password :
IF "%Pass%"=="%Pass1%" (
GOTO 2
) else (
Echo Wrong Password
Pause
GOTO 1
)
只是不断重复自己。同样的问题。关闭空格并使用百分比符号和变量。可能想要对这个选项进行不区分大小写的检查。不确定你认为他们的答案在这里是如何匹配的。围绕比较的一边而不是另一边有引号。甚至不纠正这段代码你现在应该理解你做错了什么。
echo. Set /P Choice = Command :
IF Choice == "S" GOTO 5
IF Choice == "R" GOTO 6
IF Choice == "L" GOTO 7
IF Choice == "TM" GOTO 8
IF Choice == "CP" GOTO 9
IF Choice == "FL" GOTO 10
不知道你为什么在这里使用括号。
:10
(
在这里。
)
:End
Exit
这个显而易见。你不能在另一条线上贴上你的标签。
if EXIST "PrivateFolder" goto
11
再来一次。关闭空间。在比较的两边加上引号。使用百分比符号来引用变量。并阅读IF命令的HELP。使用/ I选项!
:13
echo Are you sure you want to
lock the folder (Y/N) ?
set /p Choice = Command :
IF Choice == "Y" goto 14
IF Choice == "y" goto 14
IF Choice == "N" goto 15
IF Choice == "n" goto 15
echo Invalid Choice goto 13
虽然我们在这里,但我建议如果你要一遍又一遍地使用相同的变量,那么在提出问题之前清除变量。在上面进行此更改。
set "Choice="
set /p Choice=Command :
这里有几个问题。 word文件:是独立的。 17号是独立的。您最终意识到您需要为变量使用百分比符号,但变量%Pass%与变量%Pass%不同。关闭空格并使用引号。
echo Enter password to unlock
file :
set /p Pass = Password :
IF NOT %Pass% == MCTh3sn3r goto
17