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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
13 Kommentare
Neuester Kommentar
Schau mal hier https://ss64.com/nt/findstr.html unter dem Punkt "Errorlevel" - musst du halt dann noch ein "FORFILES" o.Ä. drumrum bauen.

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 setzenSchau mal hier https://ss64.com/nt/findstr.html unter dem Punkt "Errorlevel" - musst du halt dann noch ein "FORFILES" o.Ä. drumrum bauen.
/M Print only the filename if a file contains a match

findstr /ilmc:"net use u" *.cmd | findstr /iv "^REM"

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!
Ist das nicht der Fall entferne einfach das Caret (^), das steht nämlich für den Zeilenanfang!

Ach so ne hatte deine Frage falsch verstanden das kann ja so nicht gehen
.... 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):
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

Nimmer gleich die Powershell, dann bist du weg von dem Batch-Krampf
Oder Powershell-Code direkt in einer Batch eingebaut :
Feddich.
Thema erledigt.
Ich habe fertig ...
Ciao.
Select-String -Path 'D:\Ordner\*.bat' -Pattern "(?<!REM.*)NetDriveP=p" | select -Expand Path
@echo off
powershell -EP ByPass -NoP -C "Select-String -Path 'D:\Ordner\*.bat' -Pattern '(?<!REM.*)NetDriveP=p' | select -Expand Path"
Thema erledigt.
Ich habe fertig ...
Ciao.