如何连接批处理文件的命令行参数?
问题描述:
我目前正在试图串连我的命令行参数与此:如何连接批处理文件的命令行参数?
for %%a in (%*) do set "subject=%subject% %%a"
因此,举例来说,如果我跑
my.bat subject line here
应该为“主题行这里”设置我的主题变量,保留空间。但是,目前运行后,我的主题变量被设置为最后一个单词。我的主题值是“here”。
如何连接命令行参数是否正确?
答
你就不能这样做:
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
如果您想知道为什么环境变量'subject'在__FOR__循环之后没有期望的字符串,请打开命令提示符窗口,运行'set /?'并读取所有输出帮助页。有一个与你的例子非常相似的“for”例子,这就解释了为什么必须使用延迟扩展来连接正确的字符串。 – Mofi