Call Batch file

I have an JMS Subscriber that I'd like to have respond to a request by publishing to a different topic - I've setup batch files for the proof of concept - HOW DO I CALL A BATCH FILE from a java class ?

Like this:
import java.io.*;
public class RunProcess {
  public static void main(String[] arg) {
    try {
      Process myProcess;
      myProcess = Runtime.getRuntime().exec("cmd /c mybatch.bat");
      String s = null;
      DataInputStream in = new DataInputStream(
                           new BufferedInputStream(
                               myProcess.getInputStream()));
      while ((s = in.readLine()) != null) {
        System.out.println(s);
      System.exit(0);
    catch (IOException e) {
      System.out.println("Exception: "+ e);
      System.exit(-1);
}The InputStream/read is to display command o/p. Not absolutely necessary.
~Bill

Similar Messages

  • Question about calling batch file by using the System Exec+.vi?

    Hi
    I have a problem about calling batch file. I know that the system exec is equivalent to "run" in Windows. I called the batch file c:\rtxdos\bs\ch0.bat successfully in the "run" but it didn't work in the LabVIEW program. The dos prompt had an error message "Bad command or file name" and it just happen when I call this batch file in LabVIEW. Why?
    Bill.

    Hi,
    Try to set the "working directory" parameter of System exec.vi to the directory where the batch file is located. It may help.
    Good luck.
    Oleg Chutko.

  • Calling batch file from java Program

    I have made the java program in which i have called the batch file.But the problem is this that when i call batch file locally it executes normally but when i try to execute batcvh file from remote machine it doesn't runrather it gives Runtime IO execption.Error123.Can anyone provide me the solution for this?

    Not without a lot more information. Like for example how you are trying to execute this remote batch file, the code you are using to do that, what kind of server you have no the remote machine to let you remotely execute code, and so on.

  • Calling Batch files in PLSQL Procedure

    Hi all,
    I am working on a PLSQL procedure and having issues when I am trying to call a batch file.
    Issue:-
    I have a procedure which have to kick off a batch file. And that batch file needs to run in Windows not in Unix box. 
    Can someone please help me out in providing some samples or anything?
    Thanks a lot in advance.

    Thank you rp0428 and sb92075,
    I have tried to create a sample of what I am trying to get and so I have created the following code in a batch file and named as Check.bat:-
    @set a=3
    @set b=4
    @set /a c=%a%+%b%
    echo %c%
    So based on those links you guys provided I have created an
    Scheduler Job:-
    BEGIN
    DBMS_SCHEDULER.create_job (job_name        => 'MYJOB1',
                               job_type        => 'EXECUTABLE', JOB_ACTION      => 'c:\Check.bat', enabled         => TRUE,comments        => 'runs Check.bat' );
    END;
    And the following Procedure :-
    CREATE OR REPLACE PROCEDURE execute_bat_file
    IS
    BEGIN
       DBMS_SCHEDULER.RUN_JOB ('MYJOB1', TRUE);
    END execute_bat_file;
    And used the following exec command:-
    exec execute_bat_file;
    I am getting the following error:-
    Error starting at line 1 in command:
    exec execute_bat_file
    Error report:
    ORA-27475: "ACTUATE.MYJOB1" must be a job
    ORA-06512: at "SYS.DBMS_ISCHED", line 150
    ORA-06512: at "SYS.DBMS_SCHEDULER", line 441
    ORA-06512: at "ACTUATE.EXECUTE_BAT_FILE", line 4
    ORA-06512: at line 1
    27475. 00000 -  "\"%s.%s\" must be a %s"
    *Cause:    An object of the wrong type was specified. For example, a table
               could have been passed to the drop_job() procedure.
    *Action:   Reissue a different command applicable to this object type or
               reissue the same command using an object of the valid type.
    Can you guys please help with this?
    Thank you once again

  • Calling batch file using dbms_scheduler

    Hello,
    i have created a schedule, program and a Job to using the DBMS_SCHEDULER. creates all those fine but when i try to run i get errors.
    here is the code:
    begin
    dbms_scheduler.create_schedule(
    schedule_name => 'dailyjob',
    repeat_interval => 'FREQ=DAILY; INTERVAL=1;
    BYDAY=TUE; BYHOUR=4',
    comments => 'schedule to run daily');
    dbms_scheduler.create_program
    ( program_name => 'runord',
    program_type => 'EXECUTABLE',
    program_action => 'd:\oracle\product\admin\scripts\ord.bat >nul',
    enabled => TRUE,
    comments => 'ORDERS.'
    dbms_scheduler.create_job (
    job_name=>'TEST',
    program_name =>'runord',
    schedule_name=> 'DAILYjob',
    enabled => true,
    comments => 'TESTING the Orders Job.'
    end;
    exec dbms_scherduler.run_job('TEST');
    gives me the errors.
    in the batch file i am calling connecting to the database and calling the sql file. is there any way that i can connect to the database directly from scheduler itself? i dont like to save username and passwords in a file to connect and invoke sqlplus?
    could any one help.....

    Pass them to the external command line as parameters? That exposes the name and password even more.
    We use a tightly controlled directory with this information in it and access to the directory is controlled. The scripts are also in a controlled directory and have read privileges where the credentials are stored.
    That way the scripts don't have the data exposed and don't use it until they run.

  • Call Batch file from MAxl Script

    Is it possible to call a windows batch file from a maxl script

    If you look at the documentaion you will see there is a shell command available

  • Powershell script calling batch file, how to "echo" or otherwise pass in two or more values asked for by batch file

    I've been having a lot of problems trying to get an old batch file we have laying around, to run from my powershell script. The batch file actually asks for two inputs from the user. I've managed to put together a powershell that echos a response, but of
    course, that only will answer one of the prompts. As usual, I've simplified things here to get my testing done. The batch file looks like this:
    @ECHO OFF
    SET /P CUSTID=Customer Number:
    SET /P DBCOUNT=Number of Live Databases:
    ECHO Customer Id was set to : %CUSTID%
    ECHO Database Count was set to : %DBCOUNT%
    Two inputs, two echos to verify values have been set. Now, the powershell looks like this:
    Param(
     [string]$ClientADG,
        [string]$ClientDBCount,
        [scriptblock]$Command
    $ClientADG = '1013'
    $ClientDBCount = '2'
    $Response = $ClientADG + "`r`n" + $ClientDBCount
    $Command = 'Invoke-Command -ComputerName localhost -ScriptBlock {cmd /c "echo ' + $ClientADG + ' | E:\Scripts\Setup\Company\DatabaseSetupTest.bat"}'
    powershell -command $Command
    Output looks like:
    Customer Number: Number of Live Databases: Customer Id was set to : 1013
    Database Count was set to :
    As expected, as I'm only passing in one value. I can't figure out how to get a second value passed in for the second prompt. Instead of $ClientADG, I tried to mash the two value together in the $Response variable with a cr/lf or a cr or a lf in between,
    but no go there either. The first input gets set to the second value, and second input is blank still. In the essence of time, I need to get this batch file called from Powershell to get some folks productive while I actually rewrite what the batch file does
    in another powershell, so it can be integrated into other things. (I'm automating what a bunch of people spend hours doing into multiple scripts and eventually one BIG script so they can focus on doing their real jobs instead).
    How do I get this right in powershell? I don't want to modify the batch file at all at this point, just get it running from the powershell.
    Thanks in advance!
    mpleaf

    It's a "simple" test so I can figure out how to get the arguments passed from ps to bat. The bat file looks like this:
    @ECHO OFF
    SET CUSTID = %1
    SET DBCOUNT = %2
    ECHO Customer Id was set to : %CUSTID%
    ECHO Database Count was set to : %DBCOUNT%
    That's it. The PS script looks like this:
    Invoke-Command-ComputerName myserver-ScriptBlock{cmd/c"E:\Scripts\Setup\Company\DatabaseSetupTest.bat
    1013 2"}
    That's it. The bat file exists on "myserver", and I'm getting the echo back, but without the values.
    mpleaf

  • Call batch file from Servlet.

    Hi all,
    can anybody tell me how to call or run batch file
    from Servlet.
    Please do hurry.

    class RuntimeClass
    public static void main(String str[]){
    Runtime JVM = Runtime.getRuntime();
              try
                   JVM.exec("abc.bat");
              catch(Exception e)
                   System.out.println("hello");
    Hi,
    i hope the above program will help.

  • Call batch file using IBOT

    Hi ,
    We are using OBIEE 10G
    and I need to transfer folder from one machine to another machine(both are windows) so I have written a dos command (batch file). Now I need to call this batch file from IBOT ,how I can do this. any suggestion pls.

    Hi ,
    U can use a javascript to call the batch file and attach the script to your IBOT :
    For example :
    <html><head><script type="text/javascript">function runApp(st) {  WshShell = new ActiveXObject("WScript.Shell");  WshShell.Run (st,1,false);}</script></head><body><!-- Two ways to create a link to run the app. --><font onClick="runApp('file://c:/winnt/notepad.exe');" style="cursor: hand;"><u>Notepad</u></font><br><!-- Or use <a> descriptor -->Batch File</body></html>

  • Executable-Job to call batch-file

    Dear NG!
    I'm currently using Oracle 10.1.0.4 on a MS Windows Server 2003 and
    I've got some problems concerning EXECUTABLE-Jobs in DBMS_SCHEDULER.
    I just want to PIPE OUT the results of my Batch-Execution in a LOG-File,
    but ORACLE just returns an error code.
    Here's my example:
    the Batch-File "TEST.bat" contains:
    dir c:\temp >c:\temp\content.log
    the SCHEDULER-Job to run in PL/SQL:
    BEGIN
    DBMS_SCHEDULER.CREATE_JOB (
    JOB_NAME =>'TEST1',
    JOB_TYPE =>'executable',
    JOB_ACTION =>'c:\temp\TEST.bat',
    ENABLED => TRUE,
    AUTO_DROP => TRUE
    COMMIT;
    DBMS_SCHEDULER.RUN_JOB('TEST1');
    END;
    the LOG-Message:
    ORA-27369: Job vom Typ EXECUTABLE nicht erfolgreich mit Exit-Code: Unzul¿ige Funktion.
    I also tried the following JOB_ACTION-Parameter:
    - 'c:\windows\system32\cmd.exe /q /c c:\temp\TEST.bat'
    or
    - 'c:\windows\system32\cmd.exe /q /c c:\temp\TEST.bat >Nul'
    or
    - 'dir c:\temp >c:\temp\content.log'
    or
    - 'c:\windows\system32\cmd.exe /c /q dir c:\temp >c:\temp\content.log'
    ...but I had no success.
    I already read the posts in the forums about that but I did not found any solution.
    Could someone please tell me where my mistake is?
    A rapid response would be appreciated!
    Thanks in advance!
    Dirk

    You may be hitting bug 3663347 - WIN32/SCHEDULER: EXECUTABLE JOB FAILS WITH 'ORA-27369: THE HANDLE IS INVALID', which should be fixed by Patch 4287619.

  • How to call a batch file in Mozilla using javascript

    With the following code snippet
    WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run ("c:\\Windows\\system32\\Notepad.exe",1,true);
    it is working fine, but not in Mozilla.
    I want to call batch file in Mozilla using javascript.
    can some body suggest on this?

    I found that already. Eventhough that is slightly differ from yours.
    .exec("cmd /c start x.bat");
    Anyhow
    Thanks yarr.
    My E-Mail ID is [email protected]

  • Cannot call 2 batch files .. executes only one batch and the program exists

    Hello,
    I am trying to call 2 batch files from the program . due to some reason only first batch file is called and second one is not called . any idea why it is happening.
    import java.util.Properties;
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.io.*;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStreamReader;
    public class MyBatchFiles {
          public static void main (String args[]) throws Exception {
        StringBuffer output  = new StringBuffer();
        StringBuffer error = new StringBuffer();
        try {
                   //call batch files
                   Process Process=Runtime.getRuntime().exec("cmd /c start F:\\batch1.bat"); // Batch File Path
                       Process.waitFor();
                      BufferedReader inputStreamReader  = new BufferedReader(new InputStreamReader(cubeBuildProcess.getInputStream()));
                   BufferedReader errStreamReader  = new BufferedReader(new InputStreamReader(cubeBuildProcess.getErrorStream()));
                   output = new StringBuffer();
                   error = new StringBuffer();
                   for(String ProcessLine;(ProcessLine=inputStreamReader.readLine())!=null;)
                             output.append(ProcessLine);
                   for(String ProcessLine;(ProcessLine=errStreamReader.readLine())!=null;)
                             error.append(ProcessLine);
                   System.out.println("transformer output = " + output);
                   System.out.println("transformer error = " + error);
                   if (error!=null){
                             //calling batch2
                             Process Process2=Runtime.getRuntime().exec("cmd /c start F:\\batch2.bat"); // Batch File Path
                             Process2.waitFor();
                             BufferedReader Process_inputStreamReader  = new BufferedReader(new InputStreamReader(Process2.getInputStream()));
                             BufferedReader Process_errStreamReader  = new BufferedReader(new InputStreamReader(Process2.getErrorStream()));
                             for(String ProcessLine1;(ProcessLine1=Process_inputStreamReader.readLine())!=null;)
                                       output.append(ProcessLine1);
                             for(String ProcessLine1;(ProcessLine1=Process_errStreamReader.readLine())!=null;)
                                       error.append(cubeCopyProcessLine);
           }catch(Exception e) {
                  e.printStackTrace();
    }Thanks
    Mike

    It's your if statement. Why do you think it could be happening?

  • Batch File and MaxL Script

    I have a MaxL script that exports level0 data from various cubes. I have a batch file to call that script at daily intervals.
    I want to name the output something different each day (preferably NAMEmmdd type format). I realize I can add a rename or move to the batch but wonder if there is a MaxL method that will allow me to export to a different name?
    Current MaxL is simply
    export database APP.DB level0 data to data_file "'$Arborpath\am1119.txt'";
    Ideas or direction to go to learn answer?
    T,
    J

    Hi,
    You can pass in variables into maxl, so you the calling batch file can pass in a variable which holds the filename with the current day...
    For example you have a batch file
    essmsh c:\temp\export.mxl 'C:\temp\output%DATE:~3,2%%DATE:~0,2%.txt'
    If that was run today it would pass in 'C:\temp\output1118.txt
    Now in your maxl you just reference the variable with
    export database sample.basic level0 data to data_file $1;
    the $1 relates to the variable which was passed in, the 1 being the position it was passed in.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Problem while executing batch file via jsp

    Scenario 1+
    I have a batch file(.bat) in which i have the following code
    mkdir d:\test\test1;
    mkdir d:\test\test2;
    mkdir d:\test\test3;
    mkdir d:\test\test4;
    mkdir d:\test\test5;
    mkdir d:\test\test6;
    mkdir d:\test\test7;
    mkdir d:\test\test8;
    mkdir d:\test\test9;
    mkdir d:\test\test10;when i double click on this or execute via cmd all the 10 directories are created successfully.
    Scenario 2+
    But when i try to execute this through a jsp using the following code,Only first 5 directories are created.Please help me in resolving the issue ASAP.Thanks in advance
    <%@page import="javax.swing.*"%>
    <%@page import="javax.swing.JFileChooser"%>
    <%@page import="java.awt.event.*"%>
    <%@page import="java.awt.*"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.util.*"%>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
        <title>untitled2</title>
      </head>
      <body><%
            Runtime.getRuntime().exec("d:\\test.bat");
                    System.out.println("Inside Try Block");
                  %>
        hi</body>
    </html>I am using Jdeveloper.

    carrera wrote:
    Then can u suggest any other way how i can invoke a batch file from html/jsp.I think what some of the previous posters wanted to make clear is that jsps are not the place to go calling batch files. Jsp's are normally the view part and don't actually trigger these type of actions directly. Call a servlet to do non-view things...
    If all you want to do is execute an ant file, look for examples for running ant through java api. f.i. here

  • Java and Batch File Issue - need urgent help

    I have a java program which calls a batch file. This batch file calls another java program. I want an option so that I can close this java program from main program.
    If i try process.destroy then it will call batch file and not java program.
    I can't go away with batch file.
    I will appreciate if someone can help me.

    khannap wrote:
    Hi, Thanks for the help but this doesn't seem solving my problem completely. I will appreciate if you can help more.
    I will explain you the scenario -
    1. There is java program provided as an external program to me.Only changes things slightly.
    2. This java program is called using batch file. When batch file is started this java program starts and listens on a socket for incoming data.I would want to wrap the launch of this java program in another JVM so we can use process.destroy().
    3. I am writing a program to check performance of the above java program. I want to call this java program from my program in a loop having some varying config data. When I run the loop first time I create a batch file at run time which executes the batch file provided by vendor. This batch file starts the socket. Once my message list is over then my loop goes to executing the batch file again with different config parameters. But this time I run into issue because my previous java program is not killed after message sending was over.Would it be acceptable to mung the 3rd party batch file to insert a wrapper JVM?
    Even if i use threads I don't think I can get rid of batch file.I did not suggest getting rid of batch files.
    So, I need to find a way so that when any iteration of loop is over then this socket program is killed. These 3rd party java programs - do they not have a "terminate" command you can put at the end of your message list?
    Even if i closed the socket from my client program that doesn't help because server is still listening and waiting for new client.
    I need to kill server which was started by batch file.On Linux it would be fairly simple to modify your batch file to determine what the process id is and send the process a signal to terminate it.
    Not sure what you can do on Windows.

Maybe you are looking for