Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

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

Frage Entwicklung Batch & Shell

Mitglied: kaeptenblei

kaeptenblei (Level 1) - Jetzt verbinden

23.02.2011, aktualisiert 22:04 Uhr, 4352 Aufrufe, 6 Kommentare

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
Mitglied: bastla
23.02.2011 um 21:58 Uhr
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:
01.
@echo off & setlocal 
02.
set "Datei=D:\Devices.txt" 
03.
 
04.
for /f "tokens=1,4 delims=|" %%i in ('findstr /c:"Flash Disk USB Device" "%Datei%"') do ( 
05.
    echo start programm.exe %%i 
06.
    echo Entferne LW %%j 
07.
)
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
Bitte warten ..
Mitglied: kaeptenblei
24.02.2011 um 08:43 Uhr
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
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
Aber das mit den ersten 7 Zeilen überspringen ist super!

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

Frank
Bitte warten ..
Mitglied: bastla
24.02.2011 um 09:18 Uhr
Hallo kaeptenblei!

Freut mich, wenn's passt ...

Für welche Variante hast Du Dich denn entschieden?

Grüße
bastla
Bitte warten ..
Mitglied: kaeptenblei
24.02.2011 um 11:51 Uhr
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
Bitte warten ..
Mitglied: pieh-ejdsch
24.02.2011 um 12:18 Uhr
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
Bitte warten ..
Mitglied: kaeptenblei
24.02.2011 um 13:41 Uhr
Hallo Phil,

ich wusste doch.... das Leben kann einfach sein

Vielen Dank

Frank
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...