Línea de comando: archivo por lotes que llama a otro archivo por lotes


13

Tengo un archivo por lotes que llama a otro archivo por lotes que existe en el directorio PATH (básicamente llamando a un ejecutable con modificadores adicionales).

: bar.bat:
foo.bat file1.txt
foo.bat file2.txt
etc.

En foo.bat:

foo.exe -t -s %1

bar.bat ejecuta el primer comando pero sale inmediatamente (es decir, solo trabaja en file1.txt ).

¿Cómo puedo hacer que este archivo por lotes invoque el otro archivo por lotes más de una vez?

Respuestas:


14

Use la palabra clave CALL:

call foo.bat file1.txt
call foo.bat file2.txt

1
<copiado de la respuesta de Duncan Smart, solo para mantenerlo unido> Además de la respuesta de @ splattne, use exit / b en el archivo por lotes LLAMADO si necesita regresar antes.
Brad Bruce

1
También puede usar goto :eofpara regresar temprano. exit /bgeneralmente solo es necesario si necesita el código de retorno.
Joey

No sé por qué, pero estoy luchando para que esto funcione, he intentado ambos exit /by goto: eof. ¿Está bien agregar la salida del bate CALLed? call foo.bat > myfile
SSH Este

4

Además de la respuesta de @ splattne, úselo exit /ben el CALLarchivo por lotes ed si necesita regresar antes.


2

Otra opción (para compatibilidad con DOS anterior a la versión 3.3 :-)) es llamar al proceso de comando con la opción secundaria (/ c) y el nombre del otro archivo por lotes para procesar. Eso también hará una llamada en lugar de una cadena, e incluso funcionará en máquinas verdaderamente antiguas (en caso de que alguien se encuentre con esto y le importe). :-)


0

@echo off

echo WbLegalReport.cmd

yo:

cd I: \ CFS \ Batch \ jarDir

echo% CD%

WbLegalReport.cmd

echo% CD%

echo WatchResrAddDeleted.cmd

echo% CD%

WatchRestrAddDeleted.cmd

echo% CD%

Lo que estoy tratando de hacer aquí es llamar a estos dos archivos por lotes en una secuencia.

Incapaz de hacerlo.

ayuda por favor.

Acutalmente está fallando en el script secundario, ya que el control no regresa al script principal


0

Sanket, no llame al archivo por lotes directamente. Use el comando "CALL". Ver el ejemplo de splattne .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.