Avatar billede bumle90 Nybegynder
05. september 2002 - 19:31 Der er 8 kommentarer og
1 løsning

kørsel af .bat fil fra java applikation

Hej. Jeg vil gerne have mine java applikation til at køre en .bat fil. Jeg har imdlertid prøvet med Runtime klassen, men jeg kan ikke få det til at funge. Når jeg kører programmet sker intet, bortset fra at der bliver sendt 13 tilbage som jeg ikke aner hvad betyder. Jeg håber derer nogle der kan hjælpe mig. Her er den kode jeg har lavet :

import java.io.*;
public class test
{
public static void main(String[]arg)
{
try
{

Runtime rt = Runtime.getRuntime();
Process p=rt.exec("c:\\test.bat");
BufferedInputStream rs=new BufferedInputStream(p.getInputStream());

System.out.println(rs.read());
} catch (Exception e)
{
System.out.println("failure");
}

}
}
Avatar billede magoo20000 Nybegynder
05. september 2002 - 19:38 #1
Prøv med Runtime.getRuntime().exec(\"cmd /K start c:\\\\test\\html.bat\");

Burde starte cmd-promt og exe din .bat-fil!
Avatar billede magoo20000 Nybegynder
05. september 2002 - 19:41 #2
Eller måske bare \"C:\\\\test\\\\test.bat\" som parameter i metoden exec.
Avatar billede bumle90 Nybegynder
05. september 2002 - 19:43 #3
Jeg får følgende fejl når jeg skriver det du lige har skrevet :

test.java:11: illegal character: \92

Runtime.getRuntime().exec(\"cmd /K start c:\\\\test\\test.bat\");

                          ^

test.java:11: unclosed string literal

Runtime.getRuntime().exec(\"cmd /K start c:\\\\test\\test.bat\");

                          ^

test.java:11: ')' expected

Runtime.getRuntime().exec(\"cmd /K start c:\\\\test\\test.bat\");
Avatar billede magoo20000 Nybegynder
05. september 2002 - 19:55 #4
Kan du eksekvere følgende uden problemer??

Runtime runtime = Runtime.getRuntime();
    Process p = runtime.exec(\"notepad\");
    p.waitFor();

Den virker fint hos mig... Prøv engang, så tar vi det derfra.
Avatar billede aslan Nybegynder
05. september 2002 - 20:00 #5
ved ikke om du kan bruge det til noget....


import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;

class test
{
    test()
    {
        javax.swing.JFileChooser chooser = new javax.swing.JFileChooser();
        java.io.File file=null;chooser.setFileHidingEnabled(true);
        chooser.setMultiSelectionEnabled(false);
        chooser.setFileSelectionMode(javax.swing.JFileChooser.FILES_ONLY);
        chooser.setDialogType(javax.swing.JFileChooser.OPEN_DIALOG);
        chooser.setDialogType(javax.swing.JFileChooser.SAVE_DIALOG);
        int state=chooser.showDialog(null, "Select Directory");
        if(state ==javax.swing.JFileChooser.APPROVE_OPTION )
        {
            file = chooser.getSelectedFile();
            System.out.println(file.getAbsolutePath());
            try
            {
                Runtime.getRuntime().exec(file.getAbsolutePath());
                chooser.setSelectedFile( new File("C:/") );
            }
            catch(Exception e) { System.out.println("error running file");
            }
            }
            else            System.exit(0);

    }
    public static void main(String[] aslan)
    {
        new test();
    }
}
Avatar billede magoo20000 Nybegynder
05. september 2002 - 20:23 #6
Det her virker!!
public class Test
{
public static void main(String[]arg)
{
try
{

Runtime runtime = Runtime.getRuntime();
    Process p = runtime.exec("cmd /K start c:\\\\test.bat\"" );
    p.waitFor();
   
BufferedInputStream rs=new BufferedInputStream(p.getInputStream());

System.out.println(rs.read());

} catch (Exception e)
{
System.out.println("failure");
}

}
}
Avatar billede bumle90 Nybegynder
05. september 2002 - 20:31 #7
Maggoo...tusind tak :)
Det virker ja...takker hehe.
Kan du ik forklare mig præcis hvorfor syntaxen er er således og hvad den præcis betyder?
("cmd /K start c:\\\\test.bat\""
Avatar billede magoo20000 Nybegynder
05. september 2002 - 20:48 #8
Cmd for at få en kommandolinie/prompt.
/K betyder \"udfører den angivne kommando og fortsætte med at køre\",
Den kommando, der udfører dit batchjob er 'start'
Og \\\\ er en lovlig 'escape sequence' - søger for at du kommer helt ud i roden og kan få adgang til .bat-filen.
Og ang. de to "" til slut, så er jeg lidt blank... Kan ik helt huske/se det...Kan lige lidt senere i dag søge efter det på google.com..
Avatar billede bumle90 Nybegynder
05. september 2002 - 21:05 #9
Jeg siger ihvertfald tusind tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester