设置env vars并通过java运行autosys命令

时间:2016-07-29 17:37:47

标签: java batch-file autosys

我们正在为autosys代理构建一个基本监视实用程序,其中一个命令告诉我们代理是否处于活动状态是“autoping -M”。我们当前的工具已经由其他人编写,使用的是Java,我们需要添加一个具有此功能的新类。

该类需要有一个运行autoping命令的方法,并将输出捕获到File。这是我目前的代码

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;

public class TestAgent 
{
    public static void main(String args[]) throws IOException, InterruptedException
    {
        buildBatchFile();
    }

    public static void buildBatchFile() throws IOException, InterruptedException
    {
        String instanceName="ABM";
        PrintWriter writer = new PrintWriter("D:\\autoping-batch.bat");
        writer.println("set AUTOSYS=\"D:\\PROGRA~2\\CA\\WORKLO~1\\autosys\"");
        writer.println("set AUTOROOT=\"D:\\PROGRA~2\\CA\\WORKLO~1\"");
        writer.println("set AUTOSERV="+instanceName);
        writer.println("set AUTOUSER=D:\\PROGRA~2\\CA\\WORKLO~1\\autouser."+instanceName);
        writer.println("set CASHCOMP(x86)=D:\\PROGRA~2\\CA\\SC");
        writer.println("set PATH=%AUTOSYS%\\bin;%PATH%");
        writer.println("autoping -M ALL >> D:\\autopingResults.txt");
        writer.close();
        //Thread.sleep(5000);
        Runtime.getRuntime().exec("cmd /c D:\\autoping-batch.bat");
    }
}

可以看出,我正在尝试创建批处理文件并运行它,但输出不会被autopingResults.txt文件捕获。它只是空白。

此外,我认为命令实际上并未执行。我如何调试它,是否有更好的方法来动态设置这些环境变量(可能使用System.setProperty?)并运行autoping命令?

如果没有设置变量,autoping将返回如下错误:

C:\WINDOWS\system32>autoping
Resource bundle is not available while looking for key="CAUAJM_E_80003".

设置变量后输出如下:

C:\WINDOWS\system32>set AUTOROOT=D:\PROGRA~2\CA\WORKLO~1
C:\WINDOWS\system32>set AUTOSERV=ADK
C:\WINDOWS\system32>set AUTOSYS=D:\PROGRA~2\CA\WORKLO~1\autosys
C:\WINDOWS\system32>set AUTOUSER=D:\PROGRA~2\CA\WORKLO~1\autouser.ADK
C:\WINDOWS\system32>set PATH=%AUTOSYS%\bin;%PATH%
C:\WINDOWS\system32>autoping -M ALL

CAUAJM_I_50023 AutoPinging Machine [XXX.YYY.com]
CAUAJM_I_50025 AutoPing WAS SUCCESSFUL.

0 个答案:

没有答案