1
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
4

4 回答 4

1

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

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

您的批处理脚本中还有一个缺陷:您可能想要编写SET /a VAR=%VAR%+1以便%VAR%在递增之前对其进行评估。

于 2013-02-05T10:56:25.627 回答
1

这可能是因为“dig”尚未添加到您的 PATH 变量中。尝试打开一个新的终端窗口并输入“dig”,它可能会显示相同的错误。您必须转到控制面板 -> 系统 -> 系统属性 -> 高级选项选项卡 -> 环境变量。

在那里,您必须搜索 PATH 变量并在最后(以及在最后一个命令中添加“;”之后)添加“dig”可执行文件的完整路径(可执行文件本身除外,例如 c:\foo\bar)。然后再试一次。此环境变量告诉 Windows 在其中包含的路径列表中查找您尝试运行的可执行文件。

另一种解决方案是将已编译的 java 文件复制到 dig 可执行文件所在的位置并从那里运行它。

于 2013-02-04T17:16:49.580 回答
0

好的,可能有另一种方法来解决这个问题,但我就是这样做的。我正在使用 Eclipse,并将 dig 应用程序复制到项目目录 C:\User\username\workspace\projectName

于 2013-02-06T21:24:33.413 回答
0

您的问题是系统 PATH 变量中没有批处理文件。将批处理文件的路径插入系统PATH,它应该可以正常工作

于 2013-02-04T17:13:28.890 回答