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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top