我试图通过一个字符串到批处理文件从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行