ich hoffe ihr könnt mir eventuell bei meinem Problem mit der For schleife helfen.
Ich lasse eine Datei mit DEVCON erstellen, die alle Hardware mit Hardware ID in eine Textdatei schreibt.
Nun möchte ich, das alle Einträge die mit "PCI\" beginnen gefunden werden.
Dies funktioniert auch schon
@echo off cls set Devicelist=E:\Temp\fortest\Devicelist.txt set Daten=E:\Temp\fortest\Daten.txt set NVIDIA=false FOR /F "tokens=1-5 delims=&" %%a in ('find /i "PCI\" %Devicelist%') do ( echo %%a^%%b^%%c )
Es werden mir alle Einträge angezeigt, die mit "PCI\" beginnen
---------- E:\TEMP\FORTEST\DEVICELIST.TXT&& PCI\VEN_10DE&DEV_0FD5&SUBSYS_00F2106B PCI\VEN_10DE&DEV_0FD5&SUBSYS_00FC106B Drücken Sie eine beliebige Taste . . .
Was ich leider nicht weg bekomme, ist das er mir den Dateinamen auch ausließt
---------- E:\TEMP\FORTEST\DEVICELIST.TXT&&
Was jetzt nicht funktioniert, ist das er mit dem oben gefundenen Text weitersucht und mir nur die letzten beiden gefundenen Textstücke ausgibt.
Die Textdatei die mit den gefundenen Texten durchsucht werden soll sieht so aus (ich habe die Einträge mal verkürzt)
PCI\VEN_10DE&DEV_0FD5&SUBSYS_00F2106B set NVIDIA=true
PCI\VEN_10DE&DEV_0FD5&SUBSYS_00FC106B set NVIDIA=true
@echo off cls set Devicelist=E:\Temp\fortest\Devicelist.txt set Daten=E:\Temp\fortest\Daten.txt set NVIDIA=false FOR /F "tokens=1-5 delims=&" %%a in ('find /i "PCI\" %Devicelist%') do ( REM echo %%a^%%b^%%c FOR /F "tokens=1-5" %%f in ('find /i "%%a&%%b&%%c" %Daten%') do ( echo %%g %%h ) ) pause echo %NVIDIA% pause
Das Ergebnis sieht so aus
E:\TEMP\FORTEST\DATEN.TXT E:\TEMP\FORTEST\DATEN.TXT set NVIDIA=true E:\TEMP\FORTEST\DATEN.TXT set NVIDIA=true E:\TEMP\FORTEST\DATEN.TXT set NVIDIA=true Drücken Sie eine beliebige Taste . . .
Wie schaffe ich es das er die gefundenen werte aus Datei 1 in Datei 2 sucht und NVIDIA auf true setzt
Die Ausgabe E:\TEMP\FORTEST\DATEN.TXT verursacht Fehler die ich nicht weg bekomme.
Grüße
Blue-Twoo
Dieser Beitrag wurde von Blue-Twoo bearbeitet: 20. März 2016 - 20:00