Creo que me encontré con un error en el script por lotes de Windows.Las variables del lote de Windows no se configurarán
No puedo establecer las variables que están en una instrucción if expandida.
Aquí es una parte aislada de mi guión:
@echo off
set success=1
set Version=12345
set Target=Client
set Type=456
set dir=
set zip=
if "%Version%"=="" set success=0
if "%Type%"=="" set success=0
if 1==1 set test=42
if %success%==1 (
set test2=57005
if "%Target%"=="Client" (
set dir=ModName v%Version%
set zip=ModName v%Version% %Type%.zip
echo Version: %Version%
echo Type: %Type%
echo.
echo Target: %Target%
echo dir: %dir%
echo zip: %zip%
echo.
echo test: %test%
echo test2: %test2%
)
) else (
echo Not successful.
)
Ésta es la salida de una nueva instancia de cmd:
C:\Users\RandomClown\Desktop>test.bat
Version: 12345
Type: 456
Target: Client
dir:
zip:
test: 42
test2:
Lo que se debe notar es que la línea única sentencia if correctamente establece cosas. La multilínea si realizará cualquier cosa que NO sea un conjunto. No creo que me haya perdido nada. Además, la sentencia if multilínea está ejecutando correctamente las líneas correctas, ya que las líneas else (echo Not successful.)
no se ejecutaron.
¿Por qué las líneas no se ejecutaron?
wow que fue una respuesta rápida. Mirándolo ahora. – RandomClown
Posible duplicado de [lote de Windows SET dentro de SI no funciona] (http://stackoverflow.com/questions/9102422/windows-batch-set-inside-if-not-working) – chwarr
Tenemos que poner esta pregunta en el encabezado de 'batch-file'. – SteveFest