Batch file 带参数的批处理文件输入

Batch file 带参数的批处理文件输入,batch-file,input,Batch File,Input,我正在进行一个批量局域网聊天,它有一个受支持的命令列表。我希望所有命令都有参数,而不是让用户单独输入提示 例如: Set/pm=[命令] 因此,如果用户输入: 打招呼 它将使变量: m=send arg=hi 这应该适用于任何文本,如“say”或“ban”,而不仅仅是“send” 我如何使用Windows7实现这一点。如果需要,我可以发布整个代码。关注您的问题,即转换命令: 打招呼 要更改变量,请执行以下操作: m=send arg=hi 您可以使用FOR语句执行此操作 REM Get

我正在进行一个批量局域网聊天,它有一个受支持的命令列表。我希望所有命令都有参数,而不是让用户单独输入提示

例如:

Set/pm=[命令]

因此,如果用户输入:

打招呼

它将使变量:

  • m=send
  • arg=hi
这应该适用于任何文本,如“say”或“ban”,而不仅仅是“send”


我如何使用Windows7实现这一点。如果需要,我可以发布整个代码。

关注您的问题,即转换命令:

打招呼

要更改变量,请执行以下操作:

  • m=send
  • arg=hi
您可以使用
FOR
语句执行此操作

REM Get user command.
Set /p m=[Command]

REM Reset arg variable.
SET "arg="

REM Parse command and arg out of the user entered value.
REM Tokens are broken up by a space.
FOR /F "tokens=1,* delims= " %%A IN ("%m%") DO (
    SET m=%%A
    REM arg variable will get all text after the first space.
    SET arg=%%B
)

ECHO Command = %m%
ECHO Arg = %arg%
因此:

向世界问好

将输出:

Command = send
Arg = hello world

添加有关语言和平台的详细信息,github.com上有许多库可供使用that@MythTheWolf-基本上,您只需使用
令牌
FOR循环的
部分。例如,更改为
tokens=1,2,*
意味着在循环中,
%%A
是第一个空格之前的文本,
%%B
是第一个空格和第二个空格之间的文本,
%%C
将是第二个空格之后的所有内容。您只需要相应地调整逻辑以使用这些值。