gpt4 book ai didi

java - 包含多个空格的参数上的 Runtime.exec

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:32:02 24 4
gpt4 key购买 nike

如何进行以下运行?

public class ExecTest {
public static void main(String[] args) {
try {
//Notice the multiple spaces in the argument
String[] cmd = {"explorer.exe", "/select,\"C:\\New Folder\\file.txt\""};

//btw this works
//String cmd = "explorer.exe /select,\"C:\\New Folder\\file.txt\"";

//and surprisingly this doesn't work
//String[] cmd = {"explorer.exe", "/select,\"C:\\New Folder\\file.txt\""};

//Update: and (as crazy as it seems) the following also worked
//String[] cmd = {"explorer.exe", "/select,\"C:\\New", "Folder\\file.txt\""};

Runtime.getRuntime().exec(cmd);
} catch (Exception e) {
e.printStackTrace();
}
}
}

使用 Java 6。在 Vista x64 下测试。顺便说一下,获取执行的字符串(您必须使用 exec 的字符串版本来获取它)并在 Vista 开始菜单的 Search 字段中使用它将会按预期运行。

最佳答案

好的,这不仅仅是一个更新,也是一个答案,所以我将其作为一个文件归档。根据我能找到的所有信息,理论上应该执行以下操作:

String[] cmd = {"explorer.exe", "/select,\"C:\New", "", "", "", "", "", "", "Folder\file.txt\""};

多个空格被打成空串,使用数组版本的exec。使用上面的数组,我调试了 java.lang.ProcessImpl 的第 50-75 行中的循环,其中最终构造了一个字符串。结果字符串是:

explorer.exe/select,"C:\New 文件夹\file.txt"

这是作为第一个参数传递给 ProcessImpl 的 native create 方法(同一个类的第 118 行),看起来无法正确运行此命令

所以我想这一切都在这里结束......很遗憾。

Thnx prunge 指出了 java 错误。感谢大家的时间和兴趣!

关于java - 包含多个空格的参数上的 Runtime.exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6686592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com