如何将含有换行符的文本作为参数传递给批处理文件?

6
如果我传递这样的文本:
first line
second line

当将一个.bat文件作为参数值时,它只会获取第一行内容。

有什么办法可以解决这个问题吗? 谢谢。


你如何将文本传递给批处理文件?从外部程序,从命令行,你如何插入换行符? - jeb
2个回答

4

在批处理文件参数中传递换行几乎是不可能的。虽然可以实现,但我认为没有人开发出一种切实可行的方法来正确读取这样的参数。

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

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


0
你可以访问所有参数,但前提是批处理文件必须使用cmd /c启动,比如拖放操作。
@echo off
setlocal EnableDelayedExpansion
echo !cmdcmdline!

但是,如果您从提示符中启动批处理文件,则此方法将无法正常工作,因为cmdcmdline仅包含cmd.exe的启动方式,在这种情况下,通常是"C:\Windows\system32\cmd.exe"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接