kaeptenblei
Goto Top

Text nach Device-IDs durchsuchen und als Variable an eine BAT weitergeben

Hallo zusammen,
erst einmal vielen Dank für die vielen guten Tipps, die ich hier schon gefunden habe.
Jetzt komme ich aber nicht weiter.

Das Programm USB Image Tool erstellt Images von USB-Sticks und kann auch diese Image zurückschreiben. Aber immer nur auf einen USB-Stick.
Meine Idee war es jetzt, mit einem Batch einfach ein paar CMD Fenster aufzurufen, und dann auf mehrere Sticks das Image kopieren (zu Fuß geht das).
Leider benötigt das Programm in der Kommandozeile nicht den Laufwerksbuchsten, sondern eine Device-ID.
Diese läßt sich auch auslesen und im CMD-Fenster anzeigen oder ggf. in eine TXT Datei umleiten.

Das sieht dann so aus:

(ohne die Striche)
"Leerzeile"
USB Image Tool 1.57
COPYRIGHT 2006-2010 Alexander Beug
http://www.alexpage.de
"Leerzeile"
Device | Friendly Name | Volume Name | Volume Path | Size
------------------------------------------------------------------------------
2448 | Flash Disk USB Device | GRUMMEL | M:\ | 907 MB
2576 | Flash Disk USB Device | GRUMMEL | N:\ | 907 MB
(ohne die Striche)

[Edit Biber als Code Formatiert.]
USB Image Tool 1.57
COPYRIGHT 2006-2010 Alexander Beug
http://www.alexpage.de

  Device   | Friendly Name             | Volume Name | Volume Path | Size      
 ------------------------------------------------------------------------------
      2448 | Flash Disk USB Device     | GRUMMEL     | M:\         |    907 MB
      2576 | Flash Disk USB Device     | GRUMMEL     | N:\         |    907 MB
[/Edit Biber als Code Formatiert}.


Jetzt meine Frage, wie kann ich die Device-ID auslesen (hier im Beispiel brauche ich als erstes die Nr. "2448" und als nächstes die "2576" und als Variable nutzen?
Diese Nummern ändern sich natürlich mit jedem Stick, und ich weiß auch nicht, ob ich nur einen Stick habe, oder 10 Stück.

Diese Nummer brauche ich, damit ich das Programm im neuem Fenster starten kann, also z.B.
start programm.exe [device]
wobei [device] dann die variable wäre.

Super wäre es auch noch, wenn ich als 2.te Variable den Laufwerksbuchstaben erfassen könnte, dann kann ich den Stick per Software entfernen lassen (USB-Hardware sicher entfernen - gibts als Komandozeilenbefehl, aber der brauch den Buchstaben)

Wie komme ich an diese "Device-ID" dran, und wie muss dann die FOR - Schleife aussehen.

Hoffe, ich habe mich nicht zu kompliziert ausgedrückt.

Vielen Dank

Frank

Content-ID: 161463

Url: https://administrator.de/contentid/161463

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

bastla
bastla 23.02.2011 um 21:58:52 Uhr
Goto Top
Hallo kaeptenblei und willkommen im Forum!

Schematisch (unter der Annahme, dass als Erkennungskriterium der relevanten Zeilen "Flash Disk USB Device" dienen kann) sähe das etwa so aus:
@echo off & setlocal
set "Datei=D:\Devices.txt"  

for /f "tokens=1,4 delims=|" %%i in ('findstr /c:"Flash Disk USB Device" "%Datei%"') do (  
    echo start programm.exe %%i
    echo Entferne LW %%j
)
Alternative für Zeile 4:
for /f "usebackq skip=7 tokens=1,4 delims=|" %%i in ("%Datei%") do (
- damit würden einfach nur die ersten 7 Zeilen übersprungen und alle folgenden Zeilen ausgewertet.
Es ist übrigens nicht nötig, eine Datei für die Daten der USB-Sticks zu erstellen:
for /f "skip=7 tokens=1,4 delims=|" %%i in ('C:\Tools\usbitcmd l') do (
Grüße
bastla
kaeptenblei
kaeptenblei 24.02.2011 um 08:43:53 Uhr
Goto Top
Hallo Bastla,

vielen Dank für die superschnelle Antwort.

Ich finde das immer stark, wie Du / Ihr eine BAT-Datei auf fast eine Zeile reduziert, wenn ich es mit einem halben Roman versuchen würde face-smile
Habe mal kurz die letzte Variante ausprobiert, noch mit "echo", werde nachher mal versuchen, ob ich auch Sticks kopiert bekomme.
Das erkennen mit "Flash Disk USB Device" geht leider nicht, die Sticks melden sich auch schon mal anders.... sogar in einer Serie face-sad
Aber das mit den ersten 7 Zeilen überspringen ist super!

Nochmals vielen Dank,
melde mich nochmals kurz wenn alles läuft.

Frank
bastla
bastla 24.02.2011 um 09:18:47 Uhr
Goto Top
Hallo kaeptenblei!

Freut mich, wenn's passt ... face-smile

Für welche Variante hast Du Dich denn entschieden?

Grüße
bastla
kaeptenblei
kaeptenblei 24.02.2011 um 11:51:08 Uhr
Goto Top
Hi Bastla,

habe mich für die letzte Variante entschieden, ohne die Stick-Infos erst in eine Datei umzuleiten, also für:

for /f "skip=7 tokens=1,4 delims=|" %%i in ('C:\Tools\usbitcmd l') do (

Sag mal, kann man folgendes noch "schöner" machen?

Ich starte eine neue BATCH mit folgenden Aufruf:
start leglos.bat %%i %%j

%%j gibt den Laufwerksbuchstaben mit Backslash weiter, also f:\
der Removedrive Befehl mag aber nur f:

Jetzt hab ich in der neuen BAT folgendes gemacht, klappt auch

set lw=%2
removedrive %lw:~0,-1%

Kann ich z.b. "tokens 1,4" dazu bringen, dass an der 4.ten Stelle nur die ersten 2 Zeichen als Variable gesetzt werden?


Vielen Dank für die Hilfe

Frank
pieh-ejdsch
pieh-ejdsch 24.02.2011 um 12:18:36 Uhr
Goto Top
moin kaeptenblei,
Kann ich z.b. "tokens 1,4" dazu bringen, dass an der 4.ten Stelle nur die ersten 2 Zeichen als Variable gesetzt werden?
es würde ja reichen wenn der Backslash entfernt wird.

als delimiter kannst Du in der Forschleife hinter delims=| einen Backslash anfügen.
for /f "skip=7 tokens=1,4 delims=|\" %%i in ('C:\Tools\usbitcmd l') do (

Gruß Phil
kaeptenblei
kaeptenblei 24.02.2011 um 13:41:17 Uhr
Goto Top
Hallo Phil,

ich wusste doch.... das Leben kann einfach sein face-smile

Vielen Dank

Frank