set /p m=Message:
set tm=%m%
if /i "%tm:~0,4%"=="KICK" goto kick
echo %time% ^<%u%^>: %m% >> %log%
:kick
set person=%tm:~5%
if not defined person set /p person=Who to kick?
if not defined person goto kick
del %dir%\%person%
当然,决赛的目的地标签if not defined
是有争议的。
修复:删除引号周围%m%
附加 20130924T0736Z
这是我的测试批次:
:: @ECHO OFF
SETLOCAL
SET u=whatever
SET log=u:\log.log
set /p m=Message:
set tm=%m%
if /i "%tm:~0,4%"=="KICK" goto kick
echo %time% ^<%u%^>: %m% >> %log%
TYPE %log%
GOTO :eof
:kick
set person=%tm:~5%
if not defined person set /p person=Who to kick?
if not defined person goto kick
ECHO del %dir%\%person%
GOTO :EOF
并运行报告:
>SETLOCAL
>SET u=whatever
>SET log=u:\log.log
>set /p m=Message:
Message:
>set tm=Hello Friend :P
>if /I "Hell" == "KICK" goto kick
>echo 15:33:12.77 <whatever>: Hello Friend :P 1>>u:\log.log
>TYPE u:\log.log
15:33:12.77 <whatever>: Hello Friend :P
>GOTO :eof
所以 - 鉴于我不知道你的设置是什么,或者u
碰巧是什么,并且它对我有用,如上所示,我只能得出结论,在你的代码的其余部分中需要引号 - 你没有没有显示。log
dir
没有禁止使用您的报价 - 一旦确定“踢”的存在,所以
set tm="%m%"
直接在该IF /i...
行之后应该可以解决您的问题。