Frage

Ich habe Probleme mit den folgenden Eingabeaufforderung Befehlen (in Windows XP).

    set SOMEVAR=
    for /F %i in (1 2 3) do set SOMEVAR=%SOMEVAR% "%i"
    echo %SOMEVAR%

erwarte ich, dass es das someVar Variable zu bauen, so dass es jedes Element in der enthält in Anführungszeichen für Schleife, durch ein Leerzeichen getrennt:  1 2 3

Aber was ist das, was ich bekommen statt.

  >    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"

Es sieht aus wie Umgebungsvariablen nicht aktualisiert werden und / oder FOR-Schleife während einer erweitert.

Alle Ideen, wie eine Umgebungsvariable bauen mit einer FOR Schleife?

Eine Abhilfe, die ich zur Zeit verwendet, wird das haben FOR Schleife Anruf ein lokales Label in der BAT-Datei, die SET s die Variable selbst plus % 1 , springt dann auf : EOF . Es funktioniert, aber ich möchte, um herauszufinden, ob es einen Weg gibt es in einer Zeile ohne den Anruf und Label-Overhead zur Arbeit zu kommen.

War es hilfreich?

Lösung

sein eine Option, die Sie haben aktivieren

> help for

wird erklären,

oops, ich meine

> help set

sicher sein, den ganzen Weg nach unten lesen

Edit: es stellt sich heraus, dass Sie dies auf in einem Individuum einer Batch-Datei verwandeln können. Speichern Sie diesen Text als temp.bat

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
set SOMEVAR=
for %%i IN (temp.*) DO set SOMEVAR=!SOMEVAR! "%%i"
echo %SOMEVAR%

Andere Tipps

hier ist eine gleichwertige Alternative, vbscript verwendet, die auf Ihrem System ist bereits

somevar=""
For i=1 To 3 
    somevar=somevar & i
Next
WScript.Echo somevar

Ausgang

C: \ test> cscript // nologo test.vbs 123

Plus, wenn Sie eine Menge von diesen Sachen verwenden wollen, können Sie nutzen Vbscript Wörterbuchsammlung oder Arrays machen Ihre Variablen zu speichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top