1 votos

¿Por qué no funciona este comando por lotes como se esperaba?

Aquí están los comandos que entro en la línea de comandos de Windows:

> set /P myvalue="Enter a value: " && echo "Here is what you entered: %myvalue%"

Esperaba que esta secuencia de comandos asigne la entrada del usuario a %myvalue% , y (al salir con éxito del primer comando) generaría %myvalue% según el comando echo. La declaración de eco no está emitiendo el valor actual de %myvalue% .

Si ejecuto los comandos por separado y de forma consecutiva, obtengo el comportamiento esperado.

¿Por qué?

2voto

Las variables se expanden una línea a la vez. https://ss64.com/nt/syntax-conditional.html

Jugué con él por un tiempo y no pude encontrar una manera de pasarlo por la misma línea. Funciona cuando los comandos se ejecutan simultáneamente como usted dice.

1voto

Worthwelle Puntos 73

Como CodeSampleNotFound mencionado, la expansión es el culpable aquí. Me las arreglé para encontrar un trabajo en torno a su ejemplo:

set /P myvalue="Enter a value: " & echo. | echo "Here is what you entered: %myvalue%"

El carácter de canalización por sí sola no espere a que el set comando para recibir es la entrada antes de que el procesamiento de la echo comandos, por lo que fue necesario añadir un intrascendente de comandos entre ellos. echo. generalmente se imprime una línea en blanco, pero en este caso no, por lo que obtiene el resultado:

>set /P myvalue="Enter a value: " & echo. | echo "Here is what you entered: %myvalue%"
Enter a value: Test
"Here is what you entered: Test"

En este caso no tiene el mismo error de comprobación, pero si usted está estableciendo una nueva variable, se puede probar que fue creado con:

set /P myvalue="Enter a value: " & echo. | IF NOT "%myvalue%"=="" echo "Here is what you entered: %myvalue%"

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: