Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: juanjo86 en 10 Octubre 2013, 11:37 am



Título: Batch script --> Informacion SETLOCAL & ENDLOCAL
Publicado por: juanjo86 en 10 Octubre 2013, 11:37 am
Hola buenos días,

Os informo de la situación actual:
Tengo dos batch scripts (uno llama al otro): vamos a llamar A al script raíz y B al script que es llamado por el script raíz (A).
Ambos scripts tienen en su código el SETLOCAL al principio del script y el ENDLOCAL al final del mismo. El problema esta en que el script A debe recibir una variable que se genera en el script B pero al tener el SETLOCAL este script (B) la toma como variable local y por tanto no traslada su contenido al primer script (A).

Mis preguntas son las siguientes:
¿Puedo eliminar el SETLOCAL y el ENDLOCAL del script B sin miedo a que esto pueda generar algún nuevo tipo de problema (mas allá del problema obvio de que A y B tengan los mismos nombres de variables)?  Si elimino el SETLOCAL y ENDLOCAL del script B, entiendo que el SETLOCAL que he puesto en el script A también se mantendrá cuando llame al script B, no?

Y por otro lado, si quisiese tener el SETLOCAL y ENDLOCAL en ambos scripts, ¿hay alguna manera de conseguir que una variable generada en B la pueda leer en A?

Muchas gracias de antemano y un saludo!  :)


Título: Re: Batch script --> Informacion SETLOCAL & ENDLOCAL
Publicado por: juanjo86 en 11 Octubre 2013, 10:00 am
¿Ninguna idea?

Gracias!


Título: Re: Batch script --> Informacion SETLOCAL & ENDLOCAL
Publicado por: Eleкtro en 11 Octubre 2013, 17:58 pm
¿Ninguna idea?

Si quieres que el script A reciba una variable del script B entonces tienes que hacer global dicha variable.

Una vez hayas terminado de manejar tus variables locales en el script B, al desactivar ENDLOCAL, podrías setearlas para hacerlas globales, de esta manera:

script A
Código
  1. @Echo OFF & SETLOCAL
  2. Call ScriptB.bat
  3. Echo %var% & REM Result: 123
  4. Pause&Exit

Script B
Código
  1. @Echo OFF & SETLOCAL
  2. Set "var=123"
  3. Set "var=%var%"
  4. )
  5. Exit /B 0

Saludos


Título: Re: Batch script --> Informacion SETLOCAL & ENDLOCAL
Publicado por: juanjo86 en 14 Octubre 2013, 09:54 am
Muchas gracias EleKtro H@cker, así lo haré!  ;-)