2016-08-19 93 views
0

我目前正在试图串连我的命令行参数与此:如何连接批处理文件的命令行参数?

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

因此,举例来说,如果我跑

my.bat subject line here 

应该为“主题行这里”设置我的主题变量,保留空间。但是,目前运行后,我的主题变量被设置为最后一个单词。我的主题值是“here”。

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

+0

如果您想知道为什么环境变量'subject'在__FOR__循环之后没有期望的字符串,请打开命令提示符窗口,运行'set /?'并读取所有输出帮助页。有一个与你的例子非常相似的“for”例子,这就解释了为什么必须使用延迟扩展来连接正确的字符串。 – Mofi

回答

3

你就不能这样做:

SET subject=%* 

或者启用延迟扩展,这样的环境变量没有得到解析过程中取代。

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

查看Difference between %variable% and !variable! in batch file了解更多信息。

+0

谢谢!这工作完美 – thuy

+0

没有问题,如果这解决了您的问题,然后请勾选解决方案接受。 – FloatingKiwi

相关问题