Bug en el comando set de batch

Descubierto por 0x0309:

Yo había leído en un sitio que para asignar con el comando set es lo mismo:

set "variable=valor"

que

(set variable=valor)

Sin embargo, he encontrado un bug de cmd.exe.

Cuando cmd.exe reconoce una sola comilla dentro de paréntesis termina el archivo por lotes.

Por eso si se hace:


(")
el archivo por lotes termina.

Por eso si tenemos el siguiene código:

test.cmd

@echo off
(set var=%1)
echo.El texto se muestra.

y ejecutamos:


test.cmd "
el texto no se muestra porque el archivo por lotes concluyó antes por el bug.

Pero si hacemos:

test.cmd

@echo off
set "var=%1"
echo.El texto se muestra.

el texto si es mostrado.

Entonces no es lo mismo:

(set variable=valor)
que contiene el bug.

que:

set "variable=valor"

0 comentarios:

Publicar un comentario