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\\?\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
Please also mark the comments that contributed to the solution of the article
Content-Key: 246297
Url: https://administrator.de/contentid/246297
Printed on: April 24, 2024 at 04:04 o'clock
13 Comments
Latest comment
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.