4

我有一个 Java 类,它使用从数据库中检索到的几个参数之一Runtime.exec()来执行一个cscript进程 。String这些参数之一包括需要保留Runtime.exec()的换行符,但会删除换行符。使用时不存在问题ProcessBuilder,但我宁愿不必担心解析我的参数列表。

有没有办法在调用时保留换行符exec()

如果有人想看到它,这里有一个调用的简化示例exec()

Process proc = Runtime.getRuntime().exec("cscript test.vbs \"line1\r\nline2\"");

我的脚本将“line1 line2”作为一个参数,换行符被空格替换。

4

1 回答 1

6

您的问题中几乎没有信息,但我猜测您的问题如下。

请注意,Runtime.exec(...)带有字符串命令参数的形式最终将使用 aStringTokenizer来生成实际的命令标记,这可能解释了意外删除换行符的原因。尝试使用Runtime.exec(...)带有字符串数组命令参数的形式,以便不会对字符串命令参数进行解析。

当然,这样做可能需要您自己解析参数,但这可能是确保程序执行您期望的唯一方法。

于 2012-09-12T17:11:57.580 回答