Batch-File Verzeichnis von Suche ausschließen
Hallo zusammen,
zunächst muss ich sagen, dass das hier wirklich eine super Plattform ist, die mir schon das ein oder andere Mal weitergeholfen hat!
Zu meinem Problem:
Ich habe ein Batch-Skript erstellt, welches auf einem Rechner alle Verzeichnisse mit Unterverzeichnissen bestimmten Dateien durchsucht. Durchsucht wird dabei die komplette Platte C:\, was auch so gewollt ist. Um die Performance zu erhöhen, würde ich aber gerne das komplette Verzeichnis C:\Windows von der Suche ausschließen.
Bevor ich in meine Suchschleife gehe, habe ich mit
mein Suchverzeichnis definiert. Wie kann ich nun meine Suche dahingehend einschränken, dass C:\Windows davon ausgenommen wird? Leider konnte ich da nichts passendes finden.
Vielen Dank schonmal für Eure Hilfe!
Viele Grüße,
freel0rd
zunächst muss ich sagen, dass das hier wirklich eine super Plattform ist, die mir schon das ein oder andere Mal weitergeholfen hat!
Zu meinem Problem:
Ich habe ein Batch-Skript erstellt, welches auf einem Rechner alle Verzeichnisse mit Unterverzeichnissen bestimmten Dateien durchsucht. Durchsucht wird dabei die komplette Platte C:\, was auch so gewollt ist. Um die Performance zu erhöhen, würde ich aber gerne das komplette Verzeichnis C:\Windows von der Suche ausschließen.
Bevor ich in meine Suchschleife gehe, habe ich mit
set dir=c:\
Vielen Dank schonmal für Eure Hilfe!
Viele Grüße,
freel0rd
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 123699
Url: https://administrator.de/forum/batch-file-verzeichnis-von-suche-ausschliessen-123699.html
Ausgedruckt am: 18.05.2025 um 05:05 Uhr
5 Kommentare
Neuester Kommentar
Moin freel0rd,
willkommen im Forum.
Menno - wir beantworten ja nun wirklich gerne Fragen zu Skripten.
Aber das geht doch besser, wenn wir wissen worum es geht.
Bitte poste das komplette Fragment.
Grüße
Biber
willkommen im Forum.
Zitat von @freel0rd:
Ich habe ein Batch-Skript erstellt, welches auf einem Rechner alle Verzeichnisse mit Unterverzeichnissen bestimmten Dateien durchsucht.
Zeich doch ma!Ich habe ein Batch-Skript erstellt, welches auf einem Rechner alle Verzeichnisse mit Unterverzeichnissen bestimmten Dateien durchsucht.
Bevor ich in meine Suchschleife gehe, habe ich mit
set dir=c:\
mein Suchverzeichnis definiert.
Aahhh - ist das diese Zeile 8, in der Suchschleife anfängt? *Glaskugel putz*Menno - wir beantworten ja nun wirklich gerne Fragen zu Skripten.
Aber das geht doch besser, wenn wir wissen worum es geht.
Bitte poste das komplette Fragment.
Grüße
Biber
Hallo freel0rd,
Hach wo fang ich denn an?
Zeile 09. goto found - machst Du zu: call found "%p"
Zeile 16. echo %%p - funktioniert net in der Subroutine da %%p als For-SchleifenVariable deklariert ist und die For-Schleife in Deiner Zeile 11. mit der schliessenden Klammer beendetet wird und auch hinter diesser schliessenden Klammer kein weiterer Befehl auftaucht. Und es werden nur UmgebungsVariablen und Parameter an Subroutinen Vererbt bzw Weitergegeben. Machst Du aus: %%p - ein: %1 - damit dort der Parameter in die pst.txt reingeschrieben wird.
Zeile 17.mit goto pst - machst Du Dir eine Endlosschleife, welche immer wieder von vorn beginnt und unzählige Forschleifen öffnet. Das ist wiederrum führt dazu dass Deine For-Schleife nie beendet wird. machst Du daraus ein: goto eof
Zeile 12. goto end - schreibst Du als: goto eof
:end und exit kannste weglassen da Batches beim erreichen vom Ende automatisch schliessen bzw diese wird ja mit: goto eof - beendet
Suchts Du nach 1MiB großen Daeteien dann brauchst Du 1048576 als Grössenvergleich das entspricht dem einen MB im Windows.
zum Schluss der einzeiler für die cmd
der Unterordner sollte existieren: %systemdrive%\tmp
eventeuell als Prüfung am beginn in die Batch einbauen.
Hach wo fang ich denn an?
Zeile 09. goto found - machst Du zu: call found "%p"
Zeile 16. echo %%p - funktioniert net in der Subroutine da %%p als For-SchleifenVariable deklariert ist und die For-Schleife in Deiner Zeile 11. mit der schliessenden Klammer beendetet wird und auch hinter diesser schliessenden Klammer kein weiterer Befehl auftaucht. Und es werden nur UmgebungsVariablen und Parameter an Subroutinen Vererbt bzw Weitergegeben. Machst Du aus: %%p - ein: %1 - damit dort der Parameter in die pst.txt reingeschrieben wird.
Zeile 17.mit goto pst - machst Du Dir eine Endlosschleife, welche immer wieder von vorn beginnt und unzählige Forschleifen öffnet. Das ist wiederrum führt dazu dass Deine For-Schleife nie beendet wird. machst Du daraus ein: goto eof
Zeile 12. goto end - schreibst Du als: goto eof
:end und exit kannste weglassen da Batches beim erreichen vom Ende automatisch schliessen bzw diese wird ja mit: goto eof - beendet
Suchts Du nach 1MiB großen Daeteien dann brauchst Du 1048576 als Grössenvergleich das entspricht dem einen MB im Windows.
zum Schluss der einzeiler für die cmd
for /r "c:\" %p in ("*.pst") do @echo "%~dpp" |findstr "C:\Windows">nul||if "%~zp" gtr "1000000" @echo %~p>>%systemdrive%\temp\pst.txt
eventeuell als Prüfung am beginn in die Batch einbauen.
Moin freel0rd,
oder zumindest Deine bisherige Zeile 9 ändern, damit die Verzeichnisebene unterhalb von "C:\" Verzeichnis für Verzeichnis geprüft werden kann.
... also eine Außen-FOR/D-Innen-FOR/R-Anweisung:
Grüße
Biber
oder zumindest Deine bisherige Zeile 9 ändern, damit die Verzeichnisebene unterhalb von "C:\" Verzeichnis für Verzeichnis geprüft werden kann.
... also eine Außen-FOR/D-Innen-FOR/R-Anweisung:
...
FOR /D %%p in ("%dir%\*") DO IF /i "%%~np" NEQ "windows" Call:FOR_R "%i"
Goto :eof
:FOR_R Parameter 1 ist das (jeweilige) Start-Directory
FOR /F "%~1" %%i in ("%file%") do (
....
(wie jetzt)
... )
Goto :eof
Grüße
Biber