PHP proc_open()转义多行参数



我试图通过一个字符串到批处理文件从php使用proc_open()在Windows上。除非我传递的字符串是多行,否则它可以正常工作,因为它使用换行符将命令中断。我尝试了各种转义方法,但它们似乎都不起作用:

cmd样式-打印转义符号并换行:

proc_open('script.bat -m "this is ^n multiline"', $desc, $pipes)

另一次尝试-打印整个字符串:

proc_open('script.bat -m "this is ^\n multiline"', $desc, $pipes)

powershell样式-打印整个字符串:

proc_open('script.bat -m "this is `n multiline"', $desc, $pipes)

无论我怎么做,它要么中断字符串,要么直接输出,不换行。

我错过了什么或做错了什么?如何通过proc_open()获得多行参数?

即使您正确转义了它,您的批处理文件也几乎不可能获取多行参数。

在尝试修复php

中的转义之前,您应该直接从cmd.exe测试批处理脚本。
c:> script.bat This_is_^
More? 
More? multiline

一个简单的echo %*set "arg=%~1"是不能处理多行参数,但一些黑客喜欢:
如何接收甚至最奇怪的命令行参数?
我传递一个多行文本作为参数,它将…只有1行

相关内容

  • 没有找到相关文章

最新更新