2011-01-11 17 views
5

Me gustaría usar un archivo por lotes para llamar a un archivo por lotes diferente que está en un subdirectorio. Por ejemplo, si mi archivo de aspecto del sistema de la siguiente manera:Utilizar el símbolo del sistema para llamar a un archivo por lotes en un subdirectorio

MainFolder
        main.bat
        FirstDirectory
        SecondDirectory
                foo.bat

Entonces main.bat podría ser algo como esto:

echo on 
REM This lines tells the user what this bat file is doing 
call ant 
call \SecondDirectory\foo.bat 

Busco una solución de una línea que creo que no existe. Desafortunadamente, no siempre quiero hacer esto con un archivo por lotes y quiero hacerlo directamente desde la línea de comandos.

+3

Si elimina la barra diagonal inversa principal, debería funcionar: 'llame a SecondDirectory \ foo.bat' – Blorgbeard

+0

No estoy seguro de haber entendido el problema, el archivo principal de proceso por lotes que listó está llamando a otro archivo por lotes en un subdirectorio (aunque \ al principio lo obliga a estar fuera del directorio raíz). ¿Cuál es el problema real? Si solo quieres combinar las dos últimas líneas en una, entonces puedes usar el && y || operadores que ejecutarán el comando después de && si el primer comando tiene éxito, mientras que || ejecutará el comando después solo si falla el comando anterior. –

Respuesta

11

De hecho, puede llamar a un archivo por lotes desde otro archivo por lotes utilizando el comando call. Como dice @Blorgbeard, el problema es la barra diagonal inversa \. Quitarlo indica SecondDirectory es relativo al directorio de trabajo actual.

call SecondDirectory\foo.bat 

Una palabra de precaución: el comando call inserta esencialmente en código llamado en tiempo de ejecución. Tenga cuidado de evitar la variable name collisions.

+5

Usar la llamada ". \ Folder \ file.bat" también funcionará (. Es el directorio actual y las rutas de cotización son generalmente una buena idea) – Anders

+0

esta es la respuesta a la pregunta que hice. Desafortunadamente, no fue la solución al problema al que me enfrentaba, pero me llevó a resolver el problema. Entonces, gracias, dos veces. – KevinO

Cuestiones relacionadas