[英]Java Runtime.exec() removes newlines from arguments
我有一个Java类,它使用Runtime.exec()
来执行cscript
进程,其中包含一个从数据库中检索的多个参数的String
。 其中一个参数包括需要保留的换行符,但Runtime.exec()
会删除换行符。 使用ProcessBuilder
时问题不存在,但我不必担心解析我的参数列表。
有没有办法在调用exec()
时保留换行符?
如果有人想看到它,这里是exec()
调用的简化示例:
Process proc = Runtime.getRuntime().exec("cscript test.vbs \"line1\r\nline2\"");
我的脚本将“line1 line2”作为一个参数,换行符替换为空格。
您的问题中的信息很少,但我猜测您的问题如下。
请注意, 带有String命令参数的Runtime.exec(...)
形式最终将使用StringTokenizer
生成实际的命令令牌,这可能会解释意外删除换行符。 尝试使用带有String数组命令参数的Runtime.exec(...)
形式,以便不会解析字符串命令参数。
当然,这样做可能需要您自己解析参数,但这可能是确保程序达到预期效果的唯一方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.