【问题标题】:How to concatenate command line args for a batch file?如何连接批处理文件的命令行参数?
【发布时间】:2016-08-19 22:32:26
【问题描述】:

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

for %%a in (%*) do set "subject=%subject% %%a"

例如,如果我运行

my.bat subject line here

它应该将我的主题变量设置为“此处的主题行”,保留空格。但是,目前在运行之后,我的主题变量设置为最后一个字。我得到“这里”的主题值。

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

【问题讨论】:

  • 如果您想知道为什么环境变量 subjectFOR 循环后没有预期的字符串,请打开命令提示符窗口,运行 set /? 并阅读所有输出帮助页面。有一个for 示例与您的非常相似,解释了为什么必须使用延迟扩展来正确连接字符串。

标签: batch-file command-line arguments


【解决方案1】:

你不能这样做:

SET subject=%*

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

Setlocal EnableDelayedExpansion
for %%a in (%*) do set subject=!subject! %%a
echo %subject%

请参阅Difference between %variable% and !variable! in batch file 了解更多信息。

【讨论】:

  • 没问题,如果这解决了您的问题,请勾选已接受的解决方案。
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
相关资源
最近更新 更多