El intérprete de comandos de Windows le permite usar las comillas en todo el comando set (válido en todas las versiones de Windows NT desde NT 4.0 a Windows 2012 R2)
Su script solo debe escribirse de la siguiente manera:
@echo OFF
set "myvar=C:\my music & videos"
luego puedes poner comillas alrededor de las variables según sea necesario.
Trabajar con el indicador de CMD puede parecer esotérico a veces, pero el intérprete de comandos se comporta de manera realmente sólida al obedecer su lógica interna, solo necesita volver a pensar las cosas.
De hecho, el comando set no requiere que uses comillas, pero tanto la forma en que haces tu asignación de variables como la forma en que el método no usa comillas puede hacer que tengas espacios adicionales alrededor de tu variable que son difíciles de detectar al depurar su script.
p. Ej. Ambos de los siguientes son técnicamente válida, pero puede tener espacios finales, así que no es una buena práctica:
set myvar=some text
set myvar="some text"
por ejemplo, Ambos de los siguientes son buenos métodos para establecer las variables en el intérprete de comandos de Windows, sin embargo, el método de la doble cotización es superior:
set "myvar=Some text"
(set myvar=Some value)
Ambos dejar nada a la interpretación de la variable tendrá exactamente los datos que busca.
fuerte de texto Sin embargo, para sus propósitos, sólo el método citado funcionará válidamente porque está utilizando un carácter reservado
Por lo tanto, se debería utilizar:
set myvar="c:\my music & videos"
Sin embargo, a pesar de que la la variable IS se establece correctamente en esta cadena, cuando ECHO el aguijón, el intérprete de comandos interpretará el signo y la palabra clave para indicar que sigue otra instrucción.
Así que si quiere hacerse eco de la cadena a partir de la variable del intérprete CMD todavía tiene que ser dicho que es una cadena de texto, o si no desea que las comillas para mostrar que tiene que hacer uno de los siguientes:
eco de la variable con citas:
Echo."%myvar%"
eco de la variable sin comillas:
Echo.%myvar:&=^&%
<nul SET /P="%myvar%"
En los dos escenarios anteriores se puede repetir la cadena sin comillas acaba de encajar nordeste. Ejemplo de resultado a continuación:
C:\Admin> Echo.%myvar:&=^&%
C:\my music & videos
C:\Admin> <nul SET /P="%myvar%"
C:\my music & videos
C:\Admin>
Oh mi - estás dando los primeros pasos en las áreas realmente enloquecedoras de scripts cmd. Buena suerte, lo vas a necesitar. Consulte http://stackoverflow.com/questions/180754/best-free-resource-for-learning-advanced-batch-file-usage/180767#180767 para obtener un puntero a un buen libro y algunos consejos. –