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
这可能发生,因为“挖”还没有被添加到您的PATH变量。 尝试打开一个新的终端窗口,输入“挖”,它可能会显示同样的错误。 你要进入控制面板 - >系统 - >系统属性 - >高级选项选项卡 - >环境变量。
有你有搜索的PATH变量,并在结束时(并添加后“”最后的命令)的完整路径“挖”可执行文件(除可执行文件本身如c:\ FOO \吧)。 然后再试一次。 这个环境变量告诉Windows的外观包含在它的路径就行了,你正在尝试运行可执行文件。
另一种解决方案是在你的编译Java文件复制到哪里挖可执行文件所在,并从那里运行它。
您应该创建一个文件对象的工作目录,以防止在路径空格问题,然后使用该对象来启动批处理脚本:
File workdir = new File("C:\\dig-files3");
Runtime.getRuntime().exec("query3.bat", null, workdir);
还有在你的批处理脚本有缺陷,你可能想要写SET /a VAR=%VAR%+1
,使得%VAR%
被递增前评估。
你的问题是,你不必在系统PATH变量中的批处理文件。 插入的路径,您的批处理文件到系统路径和它应该工作正常
好了,有可能另一种方式来解决这个问题,但是这是我做到了。 我使用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