Hay alguna forma de abrir el símbolo del sistema y cambie el directorio en el símbolo del sistema y ejecute el archivo por lotes en el mismo símbolo del sistema utilizando java.

Sé cómo abrir el símbolo del sistema utilizando java.
Gracias,

InformationsquelleAutor user48094 | 2009-02-13

6 Comentarios

  1. 8

    Puede codificar la unidad de CD y el archivo de proceso por lotes en el valor de cmd.exe /K. De la doco (cmd /?):

    Nota de que varios comandos separados por el separador de comandos ‘&&’
    aceptado para la cadena si entre comillas.

    Por Ejemplo:

    cmd /C "CD C:\ && Dir"
    cmd /C "CD C:\Windows && Dir"
    cmd /C "CD C:\Windows && MySuperSuperBatchFile"

    Para más detalle, ejecute:

    cmd /?

    desde la línea de comandos.

    • Sólo salvó mi día 😀
  2. 7

    Desconfíe de Java exec. Se puede bloquearse si el proceso por lotes se llena el buffer de salida, y causar otros problemas extraños.

    Yo sugiero que busque en apache exec. Específicamente para sus necesidades debe tener en cuenta que el Ejecutor de la interfaz tiene un setWorkingDirectory método.

    Uso básico:

    Executor exec = new DefaultExecutor();
    exec.setWorkingDirectory(new File("C:\\My\\Dir\\"));
    CommandLine cl = new CommandLine("mybatch.bat");
    int exitvalue = exec.execute(cl);
    • exec.setWorkingDirectory() toma un Archivo como argumento, no una Cadena
  3. 2

    Un par de java.lang.En tiempo de ejecución.exec() variaciones tiene un dir argumento, así que supongo que usted no está pensando en eso?

    Puede compilar el siguiente programa en C y ejecutar como un contenedor para iniciar cualquier programa en cualquier directorio que desee. Si utiliza una matriz de tipo String con el tiempo de ejecución.exec evitará todos los problemas de la línea de comandos de análisis/portabilidad/adecuado cotización de los argumentos.

    No tengo ninguna máquina windows a prueba aquí, pero si se compila el programa en C para cdexe.exe usted debe ser capaz de utilizar como la siguiente:

    public class Main {
            public static void main(String args[]) {
                    String[] s = { "c:\\some\\place\\cdexe.exe",
                    "c:\\start\\dir", "c:\\my\\batch\\file.bat", "arg1", "..." };
                    try {
                            java.lang.Runtime.getRuntime().exec(s);
                    } catch (java.io.IOException e) {
                            e.printStackTrace();
                    }
            }
    }

    Supongo unistd.h es tal vez no disponible en windows, pero acaba de sustituir con uno que contiene un execv prototipo.

    #include <stdio.h>
    #include <unistd.h>  //or hard code "int execv(const char *path, char *const argv[]);"
    
    int main(int argc, char *argv[])
    {
            if (argc < 3) {
                    fprintf(stderr, "Error: Usage: %s <directory> <program> [arguments]\n", argv[0]);
                    return 1;
            }
            if (chdir(argv[1]) < 0) {
                    perror("Error");
                    fprintf(stderr, "chdir(%s) failed\n", argv[1]);
                    return 1;
            }
            argv[1] = argv[2];
            execv(argv[1], &argv[2]);      //use execvp if you want PATH to be searched
            perror("Error");
            fprintf(stderr, "execv returned\n");
            return 0;
    }
    • +1 por señalar que exec tiene un dir, -1 para C = 0… lo siento
  4. 0

    Es difícil hacer de Java para goofy independencia de la plataforma razones: básicamente lo que si usted está ejecutando java en un sistema que no tiene jerárquica de directorios?

    Hay un número de soluciones dependiendo de lo que usted está realmente tratando de hacer, pero posiblemente la más sencilla es ejecutar el eventual comando usando
    java.lang.Runtime.exec().

    .

  5. 0

    obtener el ambiente var «comspec», a continuación, exec
    %comspec% /c start/d directorio /b batchfile.bate

  6. -1

    Mantener el archivo de proceso por lotes en «camino». Usted puede ejecutar sin necesidad de ir a cualquier directorio específico.

    (Por ejemplo, usted puede tener una entrada «set path=%path%;C:……….\YourBatchFile.bat» en el Autoexec.bate en un entorno Windows)

Dejar respuesta

Please enter your comment!
Please enter your name here