Windows 7下的runtime.getruntime().exec("domain specific equivalent of cls")是什么意思?

5

我想在我的Java应用程序中清除屏幕,在阅读了许多问题并进行了谷歌搜索后,我找到了以下代码。

runtime.getruntime().exec("cls")

或者
Runtime.getRuntime().exec("cmd /c cls");

但上面的代码在Windows 7中无法运行。我知道"cls"脚本是专门针对域的,有人知道在Windows 7中应该使用什么文本吗?非常感谢您的帮助。


你有收到任何错误吗? - aksappy
把“Home”和“Clear to EOS”的 ANSI 转义序列直接写入 System.out 会简单得多。 - user207421
@askappy 我想我明白了,因为命令不起作用。 - Radan
2个回答

2

由于cls是一个内部命令(即cmd.exe本身执行而不是调用可执行程序),您可以使用以下命令:

cmd /c cls

假设您正在运行控制台类型的应用程序,在Windows 7下运行良好。


我会尝试这个,但它看起来像我之前尝试过的许多组合之一。 - Radan
Runtime.getRuntime().exec("cmd /c cls"); 没有起作用,像往常一样出现了IO异常。 - Radan
1
@Radan 你需要将参数作为字符串数组传递,参考这个链接:http://stackoverflow.com/questions/3608944/adding-parameters-to-runtime-getruntime - lbalazscs
1
仍然无法在此处使用:String[] command = new String[] {"cmd.exe", "/c", "cls"}; Runtime.getRuntime().exec(command); - Redoman
我可以确认这在Win7上对我也没有用。我还尝试了:String[] command = new String[] {"C:\\Windows\\System32\\cmd.exe", "/c", "cls"}; Runtime.getRuntime().exec(command); 没有任何错误提示,该行代码似乎被跳过了。 - localhost
@localhost:即使没有错误,也无法正常工作,因为以这种方式运行子进程时,命令的输出会被重定向。请参见此处 - Holger

1
我知道您正在寻找一种简单的方法来清除屏幕。您将不得不使用换行符或使用启用ANSI的控制台。这是一个更加困难的仅适用于Windows的方法,使用JNA,您或其他人可以考虑。这是一个教学示例。必要时添加错误检查/处理/导入/包含。您必须已经知道如何使用JNA。如果您是JNA的新手,那么这是一个很好的第一个程序供您尝试。
//------------------------------------------
// Java2Win.class
//------------------------------------------
public interface Java2Win extends Library {
    Java2Win java2Win = (Java2Win)Native.loadLibrary("Java2Win64",Java2Win.class);
    void cls();
}
//------------------------------------------

//------------------------------------------
// Java2Win.c (Java2Win.dll & Java2Win64.dll)
//------------------------------------------
JNIEXPORT void cls() {
   system("cls");
}
//------------------------------------------

//------------------------------------------
// Test
//------------------------------------------
public static void main(final String args[]) throws Exception {
    final File file = new File("rootToDLL", "Java2Win64.dll");
    LibraryLoader.loadLibrary(file);
    System.out.println("-----some output");
    System.out.println("-----some output");
    System.out.println("-----some output");
    Thread.sleep(2000);
    Java2Win.java2Win.cls();
    System.out.println("-----cleared");
}
//------------------------------------------

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接