我正在进行批处理聊天程序...因为它很有趣..但我遇到了一个问题。
我希望用户能够聊天,或者使用来自同一提示的命令,这种方法有效:
set /p m=Message:
set tm="%m%"
if %tm% == "KICK" goto kick
echo %time% ^<%u%^>: %m% >> %log%
但是要使命令工作,我需要在批处理文件中的其他位置再做一步:
:kick
set /p person=Who to kick?
del %dir%\%person%
我怎样才能让人可以输入“KICK John”来踢人?
答案 0 :(得分:0)
嗯,你可以试试这个:
Setlocal Enableextensions
set /p m=Message:
set tm="%m%"
if /i %m:~0,4% == "KICK" call kick "%m:~4%"
echo %time% ^<%u%^>: %m% >> %log%
:kick
del %dir%\%1
goto :eof
我不太熟悉这种批处理脚本(我通常使用C#),但这应该可以正常工作。告诉我它是否不起作用,以及错误消息。还有其他方法可以做到这一点。
莫纳
答案 1 :(得分:0)
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...
行之后解决您的问题。