无法使用java类访问和运行批处理文件命令

时间:2017-11-23 08:15:22

标签: java batch-file cmd

我创建了一个java类来执行我桌面上的批处理文件,这样批处理文件中的命令也会被执行。问题是,我不断收到错误:

  

文件名,目录名或卷标语法不正确。   文件名,目录名或卷标语法不正确。

我检查了.bat名称和目录。它是正确的。当我键入cmd /c start C:/Users/attsuap1/Desktop时,Windows资源管理器会打开桌面选项卡。但是,当我键入cmd /c start C:/Users/attsuap1/Desktop/DraftBatchFile.bat时,它会给出错误。我的DraftBatchFile.bat在我的桌面上。

以下是我的java代码:

public class OpenDraftBatchFile{
public OpenDraftBatchFile() {
    super();
}

/**Main Method
 * @param args
 */
public static void main(String[] args) {
    //Get Runtime object
    Runtime runtime = Runtime.getRuntime();
    try {
        //Pass string in this format to open Batch file
        runtime.exec("cmd /c start C:/Users/attsuap1/Desktop/DraftBatchFile.bat");
    } catch (IOException e) {
        System.out.println(e);
    }
}

为什么即使目录正确也无法执行批处理文件?有人请帮帮我。非常感谢你。

这些是DraftBatchFile.bat

中的代码

@echo off echo.>"Desktop:\testing\draft.txt" @echo Writing text to draft.txt> Desktop:\testing\draft.txt

当我通过运行java类执行DraftBatchFile.bat时,我想在我创建的测试文件夹中创建draft.txt文件(在桌面中)。

2 个答案:

答案 0 :(得分:2)

没有desktop:\

这样的东西

而是尝试这样的事情。

@echo off
echo . %userprofile%\Desktop\testing\dblank.txt
@echo Writing text to draft.txt > %userprofile%\Desktop\testing\dblank.txt

答案 1 :(得分:0)

您只需更改目录并创建新子目录(如果不存在)。我的提议是更改.bat文件,如下所示:

@echo off
if not exist "%userprofile%\Desktop\testing" mkdir "%userprofile%\Desktop\testing"
echo.>"%userprofile%\Desktop\draft.txt"
@echo Writing text to draft.txt>"%userprofile%\Desktop\draft.txt"

您还可以创建.txt文件并通过Java代码写入文本:

    File directory = new File(System.getProperty("user.home")+"//Desktop//testing");
    if (!directory.exists())
         directory.mkdirs();
    String content = "Writing text to draft.txt";
    File file = new File(System.getProperty("user.home")+"//Desktop//testing//draft.txt");
    BufferedWriter writer = null;
    try {
        writer = new BufferedWriter(new FileWriter(file));
        writer.write(content);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (writer != null)
                writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }