WinFuture-Forum.de: Probleme mit der FOR schleife, in 2 Dateien suchen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Probleme mit der FOR schleife, in 2 Dateien suchen


#1 Mitglied ist offline   Blue-Twoo 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 20. März 16
  • Reputation: 0

geschrieben 20. März 2016 - 19:56

Guten Abend zusammen,

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

0

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.902
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 20. März 2016 - 20:31

- Gib for /f ein eol=- mit.

Für #2 müßtest Du mit SETLOCAL ENABLEDELAYEDEXPANSION ran und dann
(1) das "vorläufige" Ergebnis in eine Variable stecken (set x=...)
(2) diese Variable nicht mit %, sondern mit ! umschließen (echo !x!).
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   Blue-Twoo 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 20. März 16
  • Reputation: 0

geschrieben 23. März 2016 - 08:17

Guten Morgen,

ich danke dir RalphS, jetzt funktioniert mein Script endlich :lol: Es macht wass es soll ^^

Grüße

Blue-Twoo

Dieser Beitrag wurde von Blue-Twoo bearbeitet: 23. März 2016 - 08:17

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0