Der Aufbau eine Umgebungsvariable mit SET einer FOR-Schleife in Command Prompt mit
-
21-09-2019 - |
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.
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.