首页 > 解决方案 > 这个时候出乎意料。错误级别纠正并继续

问题描述

如果此时出现意外情况,我试图让我的批处理文件转到某个位置,而不是终止程序。这就是我到目前为止所拥有的。

:StartConvo


if %errorlevel% neq 0 (goto skiperror & /b %errorlevel%>>ErrorLog.txt) else (goto skiperror)

:skiperror

set InVar=


set /p InVar=%Encrypt%:%=%

If /I "%InVar%"=="/c" goto Commands 
If /I "%InVar%"=="/cls" goto CryptoClear
If /I "%InVar%"=="/Releave" goto Kick
If /I "%InVar%"=="/Test" goto Test
If /I "%InVar%"=="/Tuna" goto Tuna
If /I "%InVar%"=="/SProfile" goto Usrchk
If /I "%InVar%"=="/Login" goto Login
If /I "%InVar%"=="/USRC" goto USRC
If /I "%InVar%"=="/msg" goto msg
If /I "%InVar%"=="/photo" goto photo
If /I "%InVar%"=="/Pic" goto photo
If /I "%InVar%"=="/Pics" goto photo
If /I "%InVar%"=="/Photos" goto photo
If /I "%InVar%"=="/Pictures" goto photo
If /I "%InVar%"=="/Picture" goto photo
If /I "%InVar%"=="/log" goto log
If /I "%InVar%"=="/sticker" goto sticker
If /I "%InVar%"=="/expandedstorage" goto expandedstorage
If /I "%InVar%"=="/es" goto expandedstorage
If /I "%InVar%"=="/History" goto History
If /I "%InVar%"=="/CL" goto Changelog
find /c "%Encrypt%" kick.txt >NUL

if %errorlevel% equ 0 goto Kicked


find /c "%Encrypt%" T.txt >NUL

if %errorlevel% equ 0 goto Tunaed

@echo #%Encrypt%:%InVar%>> msg.txt


find /c ":" %Encrypt%.usr >NUL

if %errorlevel% equ 0 goto privtxt

GOTO StartConvo

如果有人键入 << || && 它破坏了程序我该如何解决这个问题?

标签: batch-file

解决方案


当您使用不带引号的字符串时会发生错误(引号使毒字符像&<>|安全一样)。你的@echo线路会发生这种情况。

代替

@echo #%Encrypt%:%InVar%>> msg.txt

for /f "delims=" %%a in ("#%Encrypt%:%InVar%") do >>msg.txt @echo %%a

(注意:当输入字符串中有引号时仍然可以中断)


推荐阅读