gpt4 book ai didi

Java:showInputDialog 和 ProcessBuilder

转载 作者:行者123 更新时间:2023-12-02 13:17:36 24 4
gpt4 key购买 nike

我刚刚开始用 Java 编码,我正在尝试编写一个程序,当我单击 JButton 时运行 chkdsk。我将在这里放置一些代码,以便你们可以帮助我:

String disk = JOptionPane.showInputDialog(Janela, "Especifique a letra do disco (Exemplo: C:)", "CHKDSK /F", JOptionPane.QUESTION_MESSAGE);
if (disk.length() == 2 && disk.endsWith(":")) {
try {
String disk2 = ("fsutil dirty set " + disk)
ProcessBuilder chkdskf = new ProcessBuilder("cmd.exe", "/C", "start", disk2);
Process chkdskff = chkdskf.start();
}
catch (IOException fnfex2) {
System.out.println ("Erro no CHKDSK /F");
}
}

else {
JOptionPane.showMessageDialog(Janela, "Erro!", "Erro", JOptionPane.ERROR_MESSAGE);
}

因此,它显示一个输入对话框,以便您可以输入驱动器号(例如 C: 或 D:),然后它检查字符串是否是我想要的方式。 (有两个字符并以“:”结尾)。然后,它会启动一个新的 cmd 窗口,其中包含使 chkdsk 在下次重新启动时运行的命令。然而,这不起作用。执行代码时打开的CMD窗口标题为“fsutil dirty set C:”,但没有任何反应,没有执行任何命令。感谢任何帮助,并对我糟糕的英语表示歉意。

最佳答案

start的命令行帮助

STATE ["title"] [/D path] ... [command/program] [parameters]

因此,基于此,这意味着 start 正在以 fsutil dirty set C: 作为标题 - 原因是因为参数的工作方式ProcessBuilder

数组中的每个元素都是发送到命令的单独参数,这非常有用,因为这意味着您无需担心引号或其他转义要求

因此,基于所有这些,您应该构建您的 ProcessBuilder 更像......

ProcessBuilder chkdskf = new ProcessBuilder("cmd.exe", "/C", "start", "Make it so", "fsutil", "dirty", "set", disk);

关于Java:showInputDialog 和 ProcessBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43701772/

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