La construcción de una variable de entorno con SET utilizando un bucle en el símbolo del sistema
-
21-09-2019 - |
Pregunta
Tengo problemas con los comandos rápidos siguiente comando (en Windows XP).
set SOMEVAR=
for /F %i in (1 2 3) do set SOMEVAR=%SOMEVAR% "%i"
echo %SOMEVAR%
espero que construir el somevar variable de manera que contenga cada elemento en el bucle entre comillas, separadas por un espacio: 1 2 3
Sin embargo lo que es esto lo que me pasa en su lugar.
> set SOMEVAR=
> for /F %i in (1 2 3) do set SOMEVAR=%SOMEVAR% "%i"
>set SOMEVAR=%SOMEVAR% "1"
>set SOMEVAR=%SOMEVAR% "2"
>set SOMEVAR=%SOMEVAR% "3"
> echo %SOMEVAR%
%SOMEVAR% "3"
Parece que las variables de entorno no se actualizan y / o se expandieron durante un bucle FOR.
¿Alguna idea de cómo construir una variable de entorno con un A bucle?
Una solución que actualmente estoy usando es tener el A bucle llaman una etiqueta local en el archivo BAT que SET s la variable a sí mismo más % 1 , luego salta a : EOF . Funciona, pero me gustaría averiguar si hay una manera de conseguir que funcione en una línea sin la llamada y la etiqueta de arriba.
Solución
su opción tiene que habilitar
> help for
explicará
Vaya, i significa
> help set
asegúrese de leer todo el camino hasta el fondo
Editar: resulta que se puede activar esta opción en un individuo un archivo por lotes. guardar este texto como temp.bat
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
set SOMEVAR=
for %%i IN (temp.*) DO set SOMEVAR=!SOMEVAR! "%%i"
echo %SOMEVAR%
Otros consejos
aquí es una alternativa equivalente, usando VBScript que ya se encuentra en su sistema
somevar=""
For i=1 To 3
somevar=somevar & i
Next
WScript.Echo somevar
salida
C: \ test> cscript // nologo test.vbs 123
Además, si usted va a utilizar una gran cantidad de estas cosas, se puede hacer uso de su recogida o matrices diccionario de VBScript para almacenar sus variables.