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
Please also mark the comments that contributed to the solution of the article
Content-Key: 216189
Url: https://administrator.de/contentid/216189
Printed on: April 24, 2024 at 00:04 o'clock
7 Comments
Latest comment
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