Simple Batch-Datei soll Anzahl Dateien im Verzeichnis zählen
Hallo Gemeinde,
benötige eine Batch-Datei die im Verzeichnis X die Anzahl der Dateien zählt und bei mehr als bspw 100 Dateien eine andere Batch-Datei startet.
Ungefähr so:
IF Anzahl Dateien in C:\test > 100
THEN starte Programm.bat
ELSE exit
Ist wahrscheinlich was ganz simples aber habe leider überhaupt keine Ahnung von Batch und deshalb frage ich euch. Ich hoffe einer kann mir helfen.
Grüße
benötige eine Batch-Datei die im Verzeichnis X die Anzahl der Dateien zählt und bei mehr als bspw 100 Dateien eine andere Batch-Datei startet.
Ungefähr so:
IF Anzahl Dateien in C:\test > 100
THEN starte Programm.bat
ELSE exit
Ist wahrscheinlich was ganz simples aber habe leider überhaupt keine Ahnung von Batch und deshalb frage ich euch. Ich hoffe einer kann mir helfen.
Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 216189
Url: https://administrator.de/contentid/216189
Ausgedruckt am: 23.11.2024 um 00:11 Uhr
7 Kommentare
Neuester Kommentar
Anmerkung:
EXIT in nem Batch bewirkt was? Genau - cmd.exe wird beendet. Damit zwar auch der Batch selbst (gewollt), aber auch ein ggf. aufrufender Batch sowie die Commandline, in der ich den Batch ausführe (meist dann ungewollt).
Besser: GOTO :EOF
@uwe: Du hast echt Geduld Und dass find "" geht, habe ich auch noch nicht ausprobiert - ist aber ne gute Idee. Bisher hab ich immer ein abstruses Zeichen genommen, z.B. "?".
mfg Martin
EXIT in nem Batch bewirkt was? Genau - cmd.exe wird beendet. Damit zwar auch der Batch selbst (gewollt), aber auch ein ggf. aufrufender Batch sowie die Commandline, in der ich den Batch ausführe (meist dann ungewollt).
Besser: GOTO :EOF
@uwe: Du hast echt Geduld Und dass find "" geht, habe ich auch noch nicht ausprobiert - ist aber ne gute Idee. Bisher hab ich immer ein abstruses Zeichen genommen, z.B. "?".
mfg Martin
moin,
wenn auch schon abgehakt kann das lange Durchsuchen nach Dateien bei erreichen der 100 abgebrochen werden.
Der dir geht aber erst durchs gesamte Verzeichnis auch wenn schon lange das gefundene dasteht:
Bei mehreren 100000 Dateien würde dies schon etwas dauern.
Die Einfache Forschleife bietet sich dafür in einer Unteroutine an um bei Erfolg sofort aufzuhören.
Gruß Phil
wenn auch schon abgehakt kann das lange Durchsuchen nach Dateien bei erreichen der 100 abgebrochen werden.
Der dir geht aber erst durchs gesamte Verzeichnis auch wenn schon lange das gefundene dasteht:
dir /s /b C:\ 2>nul |find /n /v "" |findstr /bc:[100] &&echo Programm kann gestartet werden.||echo Nicht genuegend Dateien.
Die Einfache Forschleife bietet sich dafür in einer Unteroutine an um bei Erfolg sofort aufzuhören.
@echo off
setlocal
set "Quelle=D:"
set "FilterDateien=*.txt"
set /a Min=100
set /a Rekursive=1
set /a Ordner=0
if "%ordner%" equ "1" (set D=/d &set "Suche=Ordner") else set "D=" &set "Suche=Dateien"
call :test || Echo mindestes %min% %Filterdateien% %Suche% -- Programm x wird gestartet
pause
exit /b
:test
for %%a in (%Quelle%\) do set "Quelle=%%~fa"
if "%Rekursive%" equ "1" (set R=/r "%Quelle%" &set "Quelle=") else set "R="
set /a lfd=0
for %D% %R% %%i in ( "%quelle%%FilterDateien%" ) do @set /a lfd+=1,T=1/(min-lfd) 2>nul ||exit /b 1
Echo Es sind nur %lfd% %Filterdateien% %Suche%.
exit /b 0
Gruß Phil