Batch-Script zum Auslesen eines bestimmten Strings aus bestimmter Zeile aus Text-File
Hallo!
Ich möchte gern via Batch-Script einen String aus einer Text-Datei auslesen. Die Textdatei hat folgenden
Inhalt:
vssadmin 1.1 - Verwaltungsbefehlszeilenprogramm des Volumeschattenkopie-Dienstes
(C) Copyright 2001 Microsoft Corp.
Inhalte der Schattenkopiesatzkennung: {ea56a651-bfdb-485a-bb0a-1bf06438f2d9}
1 Schattenkopie(n) war(en) enthalten bei der Erstellungszeit: 12.08.2014 15:21:10
Schattenkopienkennung: {26b2276f-eb8f-4b77-9b20-8e11cd6c7350}
Ursprüngliches Volume: (C
\\?\Volume{28ab904c-9156-11d9-bd66-806e6f6e6963}\
Schattenkopievolume: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy9
Quellcomputer: xyz
Dienstcomputer: xyz
Anbieter: "Microsoft Software Shadow Copy provider 1.0"
Typ: ClientAccessible
Attribute: Permanent, Clientzug„nglich, Keine automatische Freigabe, Keine Verfasser, Differenziell
Hier interessiert mich nur die Zeile "8" (wenn ich richtig zähle) und dort nur der String: "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy9".
Ich möchte diesen String auslesen und in eine Variable packen um eine Datei aus diesem Pfad unterhalb \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy9\Windows\*.* herauszukopieren. Ich bin ein totaler Batch/ VBS-Neuling und würde mich sehr über einen Vorschlag freuen
Ich möchte gern via Batch-Script einen String aus einer Text-Datei auslesen. Die Textdatei hat folgenden
Inhalt:
vssadmin 1.1 - Verwaltungsbefehlszeilenprogramm des Volumeschattenkopie-Dienstes
(C) Copyright 2001 Microsoft Corp.
Inhalte der Schattenkopiesatzkennung: {ea56a651-bfdb-485a-bb0a-1bf06438f2d9}
1 Schattenkopie(n) war(en) enthalten bei der Erstellungszeit: 12.08.2014 15:21:10
Schattenkopienkennung: {26b2276f-eb8f-4b77-9b20-8e11cd6c7350}
Ursprüngliches Volume: (C
Schattenkopievolume: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy9
Quellcomputer: xyz
Dienstcomputer: xyz
Anbieter: "Microsoft Software Shadow Copy provider 1.0"
Typ: ClientAccessible
Attribute: Permanent, Clientzug„nglich, Keine automatische Freigabe, Keine Verfasser, Differenziell
Hier interessiert mich nur die Zeile "8" (wenn ich richtig zähle) und dort nur der String: "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy9".
Ich möchte diesen String auslesen und in eine Variable packen um eine Datei aus diesem Pfad unterhalb \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy9\Windows\*.* herauszukopieren. Ich bin ein totaler Batch/ VBS-Neuling und würde mich sehr über einen Vorschlag freuen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 246297
Url: https://administrator.de/forum/batch-script-zum-auslesen-eines-bestimmten-strings-aus-bestimmter-zeile-aus-text-file-246297.html
Ausgedruckt am: 24.04.2025 um 19:04 Uhr
13 Kommentare
Neuester Kommentar
Hallo aes0p,
z.B. so
p.s. mit diesem Schema lässt sich auch die Ausgabe von "vssadmin" direkt ohne Zwischenschritt in eine Datei verarbeiten.
Grüße Uwe
z.B. so
@echo off &setlocal
for /f "tokens=2 delims=: " %%a in ('type "c:\file.txt" ^| findstr /ir "^Schattenkopievolume:" 2^>nul') DO set "VOLUMEPATH=%%a"
echo %VOLUMEPATH%
Grüße Uwe
Du hast mich falsch verstanden...
checke ansonsten noch mal deinen Code präzise, vermutlich ein Tippfehler bei dir im create shadow-Befehl ...
p.s. Wenn das direkte Ansprechen der Schattenkopie nicht klappt, erstelle einen Link zu dieser mit mklink wie hier beschrieben:
Windows Server 2008 verweigert wiederherstellung von Schattenkopien
copy "%VOLUMEPATH%\Windows\*.dat" "C:\temp"
p.s. Wenn das direkte Ansprechen der Schattenkopie nicht klappt, erstelle einen Link zu dieser mit mklink wie hier beschrieben:
Windows Server 2008 verweigert wiederherstellung von Schattenkopien
Das Problem war nur dein gesposteter Output
der einen vermuten ließ das das gesuchte Wort ganz am Anfang der Zeile steht, was aber nicht der Fall ist (es stehen ein paar Leerzeichen davor). Am Smartphone konnte ich das leider nicht prüfen
.
p.s. Bitte nutze in Zukunft Code-Tags für deinen Quellcode:
@echo off &setlocal
for /f "tokens=2 delims=: " %%a in ('vssadmin create shadow /for^=C: ^| findstr /i "Schattenkopie-Volumename:" 2^>nul') DO set "VOLUMEPATH=%%a"
copy "%VOLUMEPATH%\Windows\*.dat" "C:\temp"
p.s. Bitte nutze in Zukunft Code-Tags für deinen Quellcode:
<code> Quellcode </code>
, ansonsten kommen uns hier eventuell wichtige Sonderzeichen abhanden, wie du siehst!Zitat von @aes0p.:
In Variante 2 wird der vssadmin-Befehl nicht ausgeführt. Ich denke das sollte ich hinbekommen.
hatte noch einen kleinen Tippfehler nachkorrigiert , sorry. Es fehlt nur ein kleines aber wichtiges ^ vor dem Gleichheitszeichen.In Variante 2 wird der vssadmin-Befehl nicht ausgeführt. Ich denke das sollte ich hinbekommen.