Teile einer Ausgabe in einer Variable speichern
Hallo mein Name ist Alex,
ich bin neu im Bereich der Progamierung aber ich habe eine Aufgabe zu erledigen. ich soll eine Batch schreiben die nach einem Laufwerk sucht dann die Datensicherung startet und bei Fehlern eine E-Mail versendet.
Also ich soll eine Batch schreiben die die Kennung der Laufwerke ausliest und dann in Variabeln abspeichert, um sie dann weiter zu verwenden.
also ich wüdre gerne die Kennung von diesem Befehl:
vol c:
Der dann so etwas ausgibt wie: Datenträger in Laufwerk C: ist Acer
Volumeseriennummer: 24C7-52C8
auslesen. In einer TXT habe ich diese Kennung ja schon.
Ich bräuchte dann davon 24c7-52c8 möglichst in einer Variablen. Um dann im weitern Verlauf der Batch dannach zu suchen.
Wenn mir einer helfen kann, wäre es nicht schlecht wenn er es auch Kommentieren könnte, da ich nicht nur Kopieren will. Ich würde auch gerne verstehen was passiert.
Gruß und schon mal danke für die Hilfe
Alex
ich bin neu im Bereich der Progamierung aber ich habe eine Aufgabe zu erledigen. ich soll eine Batch schreiben die nach einem Laufwerk sucht dann die Datensicherung startet und bei Fehlern eine E-Mail versendet.
Also ich soll eine Batch schreiben die die Kennung der Laufwerke ausliest und dann in Variabeln abspeichert, um sie dann weiter zu verwenden.
also ich wüdre gerne die Kennung von diesem Befehl:
vol c:
Der dann so etwas ausgibt wie: Datenträger in Laufwerk C: ist Acer
Volumeseriennummer: 24C7-52C8
auslesen. In einer TXT habe ich diese Kennung ja schon.
Ich bräuchte dann davon 24c7-52c8 möglichst in einer Variablen. Um dann im weitern Verlauf der Batch dannach zu suchen.
Wenn mir einer helfen kann, wäre es nicht schlecht wenn er es auch Kommentieren könnte, da ich nicht nur Kopieren will. Ich würde auch gerne verstehen was passiert.
Gruß und schon mal danke für die Hilfe
Alex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 164464
Url: https://administrator.de/contentid/164464
Ausgedruckt am: 19.11.2024 um 23:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo racer1601 und willkommen im Forum!
Der Umweg über eine Textdatei ist nicht erforderlich:
Damit wird aus der Ausgabe die Zeile mit dem Text "Volumeseriennummer" gefiltert und dann der passende Teil entnommen (nähere Erklärung siehe Tutorial zur FOR-Schleife) ...
Da der gesuchte Wert in der letzten Zeile steht, würde auch
genügen - es wird in diesem Fall bei jedem Schleifendurchlauf der Wert von %SN% überschrieben und schließlich bleibt der Teil ("token")2 (= zwischen dem ersten und dem - hier nicht vorhandenen - zweiten Default-Trennzeichen "Leerzeichen") aus der letzten Zeile gespeichert.
Grüße
bastla
Der Umweg über eine Textdatei ist nicht erforderlich:
for /f "tokens=2" %%i in ('vol c:^|findstr "Volumeseriennummer"') do set "SN=%%i"
Da der gesuchte Wert in der letzten Zeile steht, würde auch
for /f "tokens=2" %%i in ('vol c:') do set "SN=%%i"
Grüße
bastla
moin und willkommen,
um es kurz zu machen
Wie das funktioniert, kannst du u.a in der Tutorial zur FOR-Schleife zur For Schleife finden.
Gruß
edit
5 minuten und einen Bastla zu spät
/edit
um es kurz zu machen
for /f "skip=1 tokens=2 delims=: " %a in ('"vol c:"') do echo %a
oderfor /f "skip=1 tokens=2 delims=: " %%a in ('"vol c:"') do set "driveserialnr=%%a"
Wie das funktioniert, kannst du u.a in der Tutorial zur FOR-Schleife zur For Schleife finden.
Gruß
edit
5 minuten und einen Bastla zu spät
/edit
Hallo racer1601!
Demnach suchst Du eigentlich den Laufwerksbuchstaben - das könnte etwa so gehen (obwohl ich - wegen "Das Gerät ist nicht bereit." bzw "Das System kann den angegebenen Pfad nicht finden." - im Zweifelsfall auf VBS zurückgreife):
Durch das "
Grüße
bastla
Demnach suchst Du eigentlich den Laufwerksbuchstaben - das könnte etwa so gehen (obwohl ich - wegen "Das Gerät ist nicht bereit." bzw "Das System kann den angegebenen Pfad nicht finden." - im Zweifelsfall auf VBS zurückgreife):
###################################################################
@ECHO off & setlocal
set "SN=24C7-52C8"
.
.
.
.
.
.
.
set "LW="
for %%L in (A B C D E) do vol %%L: 2>nul|findstr "%SN%">nul && set "LW=%%L:"
echo.%LW%
if not defined LW goto :eof
:tuwas
robocopy ...........................
###################################################################
2>nul
" werden die oben angesprochenen Fehlermeldungen unterdrückt.Grüße
bastla