【问题标题】:Specific Prompt command with javajava的特定提示命令
【发布时间】:2012-08-18 14:59:43
【问题描述】:

我想在java下执行以下windows命令:

rmdir /s C:\Main\Second\Third

是的

问题是要运行 2 个命令,一个用于删除,一个用于确认(如您所见,一个简单的“Y”)。

我知道这是可行的,但我没有成功。

        String rmCommand = "cmd.exe /c rmdir /s /q C:\\Main\\Second\\Third";
        
        Runtime runt = Runtime.getRuntime();
        Process process = runt.exec(rmCommand);

所以我的问题是:感谢 JAVA 代码,如何在提示符下运行上述两个命令。

编辑:我根据一些建议修改了一些初始代码,但它仍然不起作用......我不知道该怎么做。

【问题讨论】:

  • 顺便说一句,你可以很容易地删除只有java的文件/目录。
  • 不,它对我不起作用。我尝试删除但遇到了这种错误:bugs.sun.com/bugdatabase/view_bug.do?bug_id=4722539:/ 所以我认为这是我唯一的解决方案。
  • 必须同意@MatjazMuhic。为什么要为此付出代价?
  • 如果文件被锁定不能删除,那么rmdir也不行,不是吗?
  • 你试过echo y | cmd.exe /c rmdir /s /q C:\\Main\\Second\\Third

标签: java windows command prompt


【解决方案1】:

rmdir 不是程序 - 它是命令外壳的一部分。所以你需要运行类似的东西:

"cmd.exe /c rmdir /s C:\\Main\\Second\\Third"

(当然,对于生产版本,您需要确保获得正确的 cmd.exe。)

【讨论】:

  • 我明白了,感谢您的快速答复。但是问题:如果 cmd.exe 要求确认怎么办?这里我需要在cmd中输入“Y”来确认删除。
  • @user1618814 最好在您的问题中添加此详细信息以使其更清晰
  • @ Alex k :正如所写:“所以我的问题是:如何通过 JAVA 代码快速运行上述两个命令。”我还编辑了我的帖子,如果不够清楚,抱歉
  • 你可以使用 /q 不让它问,我想。
  • 我看不出我的错误在哪里。文件 F1 = new File("BLABLA") 不必关闭,不是吗?
【解决方案2】:

为避免被要求确认,请将 /Q 添加到您的 rmdir 命令:http://www.computerhope.com/rmdirhlp.htm

但是使用 rmdir 执行此操作是一种非常糟糕的做法。如果您不想自己执行递归删除操作,请使用Apache Commons FileUtils。这不是 rmdir 是否足够的问题,而是使用正确方法的工具的问题。如果我理解正确,您遇到的问题是 java 无法删除打开的文件,但 rmdir 可以。看起来更像是您的代码打开文件的问题,不是吗?

【讨论】:

  • 是的,您可能对打开的文件是正确的,但我很难检查整个代码。我需要再次检查 400 行,我看不出我在哪里忘记了..
  • 顺便说一句,我尝试使用 rmdir 和您的建议,没有错误,但没有删除任何内容:/
  • 您是否按照 Jon Skeet 的回答使用 cmd.exe 运行它?
【解决方案3】:

抛开它是否良好做法的问题,您的问题的答案如下:创建一个包含单个字符Y的文件。假设它叫y.txt

那么你的命令是:

cmd.exe /c rmdir /s C:\\Main\\Second\\Third < y.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 2013-09-05
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多