批量聊天程序的踢命令

时间:2013-09-18 23:30:19

标签: batch-file

我正在进行批处理聊天程序...因为它很有趣..但我遇到了一个问题。

我希望用户能够聊天,或者使用来自同一提示的命令,这种方法有效:

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”来踢人?

2 个答案:

答案 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 

所以 - 鉴于我不知道您对ulogdir的设置恰好是什么,并且如上所示它对我有用,我可以只得出结论,代码的其余部分需要引号 - 你没有显示。

没有禁止使用你的报价 - 一旦确定存在“踢”,所以

set tm="%m%"

直接在IF /i...行之后解决您的问题。