Batchabfrage in weitere Variablen setzen
Hallo,
in einer Batch frage ich folgendes ab und setze es in eine Variable.
Wenn eine neue Snapshot-ID dazu kommt, habe ich immer nur die letzte ID in der Variable.
Wie bekomme ich es hin, wenn mehre IDs vorhanden sind, diese in weitere Variablen (ID2,ID3,ID4 usw.) zu setzen.
C:\>wmic shadowcopy get ID
ID
{69217288-E627-45B4-AA3D-5238AD437A4E}
{A2A1FDF6-3B1B-4010-ACDB-105254E506D0}
Gruß supertux
in einer Batch frage ich folgendes ab und setze es in eine Variable.
for /f "tokens=2 delims==" %%a in ('wmic shadowcopy get ID /value') do SET ID1=%%a
Wenn eine neue Snapshot-ID dazu kommt, habe ich immer nur die letzte ID in der Variable.
Wie bekomme ich es hin, wenn mehre IDs vorhanden sind, diese in weitere Variablen (ID2,ID3,ID4 usw.) zu setzen.
C:\>wmic shadowcopy get ID
ID
{69217288-E627-45B4-AA3D-5238AD437A4E}
{A2A1FDF6-3B1B-4010-ACDB-105254E506D0}
Gruß supertux
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 636531
Url: https://administrator.de/contentid/636531
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
3 Kommentare
Neuester Kommentar
Ungetestet:
Die verschachtelte FOR /F Schleife ist notwendig um das zusätzliche CR Zeichen (Bug in WMIC) loszuwerden.
Wenn ich sowas sehe, frage ich mich aber immer nach dem Sinn, erst ein assoziatives Array zu bauen. Warum nicht gleich mit %%b in der FOR Schleife weiterarbeiten?
Steffen
@echo off &setlocal EnableDelayedExpansion
set "n=0"
for /f "tokens=2 delims==" %%a in ('wmic shadowcopy get ID /value') do for /f %%b in ("%%a") do set /a "n+=1" &set "ID!n!=%%b"
for /l %%i in (1 1 !n!) do echo !ID%%i!
pause
Wenn ich sowas sehe, frage ich mich aber immer nach dem Sinn, erst ein assoziatives Array zu bauen. Warum nicht gleich mit %%b in der FOR Schleife weiterarbeiten?
Steffen
Warum denn SET? Die FOR /L Schleife war doch nur um zu sehen was du bereits in den Variablen hast (bzw. um zu zeigen wie du darauf zugreifen kannst). Die Zuweisung erfolgt in der FOR /F Schleife. Wenn du mal ein bisschen mehr Kontext geben würdest, was du mit den gespeicherten Werten machen willst, wären diese Variablen aber sicher unnötig. À la ..
Steffen
@echo off &setlocal EnableDelayedExpansion
for /f "tokens=2 delims==" %%a in ('wmic shadowcopy get ID /value') do for /f %%b in ("%%a") do (
echo Mach hier was mit %%b
)
pause