如何将带有新行的文本作为参数传递给bat文件?

时间:2012-02-22 10:52:01

标签: parameters batch-file newline command-prompt

如果我传递这样的文字:

first line
second line

到.bat文件,它只将第一行作为参数值。

我该如何解决这个问题? 感谢

2 个答案:

答案 0 :(得分:2)

在批处理文件参数中传递换行几乎是不可能的。它可以完成,但我认为没有人能够在批处理文件中正确地读取这样的参数。

最好的办法是定义一个包含两行文本的环境变量,包括换行符。然后将变量的名称作为参数传递给批处理,然后让批处理文件使用延迟扩展来访问该值。

test.bat的:

@echo off
setlocal enableDelayedExpansion
echo !%1!

从命令行:

>set multiLine=hello^
More?
More? world

>test multiLine
hello
world

对于任何有兴趣的人,以下是jeb关于批处理参数中的换行符的讨论:http://www.dostips.com/forum/viewtopic.php?t=1768

答案 1 :(得分:0)

您可以访问所有参数,但仅当批处理文件以cmd /c启动时,例如。喜欢拖放动作。

@echo off
setlocal EnableDelayedExpansion
echo !cmdcmdline!

但是如果你从提示符启动批处理文件,那么这将不起作用,因为cmdcmdline仅包含cmd.exe的启动方式,在这种情况下它通常类似于"C:\Windows\system32\cmd.exe"