paulbrehm

Benötige Hilfe bei Datei Auslesung und Vergleichung

Hey,

ich hätte eine Frage wegen einem Problem was ich in moment habe...

Ich würde sagen das ich ungefähr die Basics von Batch weiß aber irgendwie komm ich auf keine Lösung :/

Ich habe ein Ordner voll von Batch Dateien, an der Zahl 166, die ich auslesen soll.
In diesen Dateien werden z.B Laufwerke zugewiesen (L,Z,U u.s.w).
Jetzt muss ich herausfinden wie viele der Batch Dateien z.B das Laufwerk U haben und dann diese mit dem Dateinamen ausgeben.

Ich hoffe auf hilfreiche Antwort :D

VG

Paul
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 501542

Url: https://administrator.de/forum/benoetige-hilfe-bei-datei-auslesung-und-vergleichung-501542.html

Ausgedruckt am: 28.04.2025 um 02:04 Uhr

SlainteMhath
Lösung SlainteMhath 04.10.2019 um 09:34:51 Uhr
Goto Top
Moin,

Ist das eine Hausaufgabe? face-smile

lies dir mal die Hilfe zu dem Befehl "findstr" durch...

lg,
Slainte
Lochkartenstanzer
Lochkartenstanzer 04.10.2019 aktualisiert um 10:07:42 Uhr
Goto Top
Moin,

Gehe in den Windows-Exlplorer auf den oder und tippe im Suchfeld U:

Vorher am besten den Ordner indexieren lassen.

lks
PaulBrehm
PaulBrehm 04.10.2019 um 10:19:33 Uhr
Goto Top
Hey SlainteMhath,

danke dir für den Befehl :D.

Das hat mir schonmal super weitergeholfen.

Nur jetzt zeigt er mir den Kompletten Inhalt der Batch Dateien an :/
gibt es eine Möglichkeit das nur der Name der Datei ausgegeben wird?

VG
Paul
SlainteMhath
SlainteMhath 04.10.2019 um 10:32:24 Uhr
Goto Top
Schau mal hier https://ss64.com/nt/findstr.html unter dem Punkt "Errorlevel" - musst du halt dann noch ein "FORFILES" o.Ä. drumrum bauen.
141320
Lösung 141320 04.10.2019 aktualisiert um 12:03:03 Uhr
Goto Top
Zitat von @SlainteMhath:

Schau mal hier https://ss64.com/nt/findstr.html unter dem Punkt "Errorlevel" - musst du halt dann noch ein "FORFILES" o.Ä. drumrum bauen.
Nicht nötig, einfach den dafür vorgesehenen Parameter setzen
/M Print only the filename if a file contains a match
PaulBrehm
PaulBrehm 04.10.2019 um 14:33:27 Uhr
Goto Top
Hey nc6400,

so funktioniert es :D

Danke für die schnelle Hilfe Leute und noch ein schönes Wochenende face-smile

VG

Paul
PaulBrehm
PaulBrehm 04.10.2019 um 15:20:15 Uhr
Goto Top
Hey ich bin es nochmal :D,

ich habe jetzt ein Problem...

Er gibt alles super aus.. Nur bei den Batch Dateien steht manchmal ein REM vor...

Deshalb wollte ich fragen ob es eine möglichkeit gibt das ich, dass verhindern kann das diese Batches mit aufgelistet werden.
141320
141320 04.10.2019 aktualisiert um 15:45:47 Uhr
Goto Top
findstr /ilmc:"net use u" *.cmd | findstr /iv "^REM"  
PaulBrehm
PaulBrehm 04.10.2019 um 15:57:34 Uhr
Goto Top
Hey nc6400,

also ich habe es jetzt so in den Code geschrieben:

findstr /ilmc:"NetDriveP=p" *.bat | findstr /iv "^REM"  

Aber er gibt immer noch die Batch Dateien aus die ein REM vor sich haben...

VG

Paul
141320
141320 04.10.2019 aktualisiert um 16:11:44 Uhr
Goto Top
Dann steht das REM nicht ganz am Zeilenanfang (davon bin ich mit obigem Code ausgegangen).
Ist das nicht der Fall entferne einfach das Caret (^), das steht nämlich für den Zeilenanfang!
PaulBrehm
PaulBrehm 04.10.2019 um 16:16:39 Uhr
Goto Top
Okay ich habe es versucht aber es ist trotzdem dasselbe spiel wie vorher.
Aber die Batch Dateien sind eh alle irgendwie anders... (z.B mal mit einem Leerzeichen vorne.. mal mit zwei)
Geht es irgendwie das er die Zeile, wo er den Suchbegriff gefunden hat, auf diese REM prüft ?

VG

Paul
141320
141320 04.10.2019 aktualisiert um 16:43:59 Uhr
Goto Top
Ach so ne hatte deine Frage falsch verstanden das kann ja so nicht gehen face-big-smile .... Die Ausgabe sind ja nur die Dateinamen ...

Für die Verwendung in einer Batch (für die direkte Ausführung in der Konsole die doppelten Prozentzeichen durch einfache ersetzen):
for /f "tokens=2,* delims=:" %a in ('findstr /ilc:"NetDriveP=p" "D:\Ordner\*.bat"') do @echo %b|findstr /iv REM >nul 2>&1 && @echo %a  
141320
Lösung 141320 04.10.2019 aktualisiert um 16:49:57 Uhr
Goto Top
Nimmer gleich die Powershell, dann bist du weg von dem Batch-Krampf
Select-String -Path 'D:\Ordner\*.bat' -Pattern "(?<!REM.*)NetDriveP=p" | select -Expand Path  
Oder Powershell-Code direkt in einer Batch eingebaut :
@echo off
powershell -EP ByPass -NoP -C "Select-String -Path 'D:\Ordner\*.bat' -Pattern '(?<!REM.*)NetDriveP=p' | select -Expand Path"  
Feddich.

Thema erledigt.

Ich habe fertig ...

Ciao.