即时得到“挖不被识别为一个内部或外部命令”,当我尝试运行从Java的批处理文件(Im getting

2019-08-16 17:27发布

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException, StringIndexOutOfBoundsException
    {
        Runtime.getRuntime().exec("cmd /c start C:\\dig-files3\\query3.bat");
    }
}

我试图通过Java程序来启动一个批处理文件,但我得到一个“挖不被识别为一个内部或外部命令......”消息在cmd屏幕。 然而,当我在窗口中的批处理文件,双击运行良好。 我怎样才能解决这个问题? 下面是该批处理文件的内容:

SET /a VAR=0 
:HOME 
SET /a VAR=VAR+1 

IF %VAR%==200000 goto :End 

 dig @10.3.1.166 6.4.0.3.5.5.5.9.9.9.com. naptr
goto :HOME 

:END

Answer 1:

这可能发生,因为“挖”还没有被添加到您的PATH变量。 尝试打开一个新的终端窗口,输入“挖”,它可能会显示同样的错误。 你要进入控制面板 - >系统 - >系统属性 - >高级选项选项卡 - >环境变量。

有你有搜索的PATH变量,并在结束时(并添加后“”最后的命令)的完整路径“挖”可执行文件(除可执行文件本身如c:\ FOO \吧)。 然后再试一次。 这个环境变量告诉Windows的外观包含在它的路径就行了,你正在尝试运行可执行文件。

另一种解决方案是在你的编译Java文件复制到哪里挖可执行文件所在,并从那里运行它。



Answer 2:

您应该创建一个文件对象的工作目录,以防止在路径空格问题,然后使用该对象来启动批处理脚本:

File workdir = new File("C:\\dig-files3");
Runtime.getRuntime().exec("query3.bat", null, workdir);

还有在你的批处理脚本有缺陷,你可能想要写SET /a VAR=%VAR%+1 ,使得%VAR%被递增前评估。



Answer 3:

你的问题是,你不必在系统PATH变量中的批处理文件。 插入的路径,您的批处理文件到系统路径和它应该工作正常



Answer 4:

好了,有可能另一种方式来解决这个问题,但是这是我做到了。 我使用Eclipse和我复制掏应用到项目目录C:\用户\用户名\工作区\ PROJECTNAME



文章来源: Im getting “dig is not recognized as an internal or external command” when I try to run a batch file from java