如何连接批处理文件的命令行参数?

thu*_*huy 1 command-line arguments batch-file

我目前正在尝试将我的命令行参数与此连接:

for %%a in (%*) do set "subject=%subject% %%a"
Run Code Online (Sandbox Code Playgroud)

例如,如果我跑

my.bat subject line here
Run Code Online (Sandbox Code Playgroud)

它应该将我的主题变量设置为“此处的主题行”,保留空格。然而,当前运行后,我的主题变量设置为最后一个词。我得到的主题值为“这里”。

如何正确连接命令行参数?

Flo*_*iwi 6

你不能这样做吗:

SET subject=%*
Run Code Online (Sandbox Code Playgroud)

或者启用延迟扩展,以便环境变量在解析期间不会被替换。

Setlocal EnableDelayedExpansion
for %%a in (%*) do set subject=!subject! %%a
echo %subject%
Run Code Online (Sandbox Code Playgroud)

参阅 %variable% 和 !variable! 之间的区别 在批处理文件中获取更多信息。