【发布时间】:2015-02-06 15:20:56
【问题描述】:
我正在将一个多行字符串从一个 vbscript 传递给一个批处理文件。但是,当我尝试从批处理文件中获取整个字符串时,它只接收第一行。如何让批处理文件知道读取整个字符串,而不是在换行符处停止。
输入:
C:\组件A
C:\组件B
C:\组件C
VBScript:
multstring = "C:\Component_A" + Chr(13) + Chr(10) + "C:\ComponentB" +
Chr(13) + Chr(10) + "C:\ComponentC" + Chr(13) + Chr(10)
script_path = "runscript.bat """ + multstring + """
Shell(script_path)
批次:
set "scriptargs=%~1"
echo "%scriptargs%"
setlocal enableDelayedExpansion
echo !scriptargs!
我得到的输出:
C:\组件A
想要的输出:
C:\组件A
C:\组件B
C:\组件C
【问题讨论】:
-
cmd 不适用于多行字符串。 一次只能一行。您可以将
|输入到要处理的脚本中,但这需要一些花哨的脚本逻辑。我建议将您的输入与分隔符(如;)连接成一行,然后在脚本中使用for解析它。 -
@DavidRuhmann 这正是我最终所做的。通过特殊的分隔符分隔。感谢您的回复。
-
您发布的 VBS 代码无效 - 它无法提供您声称的输出。总结代码时请注意发布工作示例。
-
@DavidRuhmann - cmd 可以处理环境变量中的多行字符串。但确实不能将多行值作为命令行参数传递。
标签: shell batch-file vbscript