Suchschleife Batch
Ich versuche eine Batchdatei du schreiben die einen Ordner durchsucht
Hallo zusammen,
durch unverständige Fehlerhafte Exporte ist folgendes Problem aufgetreten.
Es gibt knapp 100 Ordner mit einer Hand voll bis mehrere 1000 HTML Dateien darin die aufsteigend durchnummeriert sind jedoch gibt es bei einigen der größeren das Problem das aufgetreten das einige Dateien Fehlen.
Im Ordner sieht das dann circa so aus
1
2
3
4
5
231
232
233
234
271
272
719
720
721
739
740
741
742
..
Wie ersichtlich ist fehlen 2 Bereiche.
Ich würde nun gerne eine Batchdatei schreiben die im inneren des Ordners gestartet wird und guckt
gibt es "1.html"
wenn nein -> 1.html fehlt
wenn ja -> gibt es 2.html
wenn nein -> 2.html fehlt
usw.
Wenn eine Datei fehlt soll die Schleife abgebrochen werden und eine MassageBox oder ähnliches auftauchen in der man darüber informiert wird damit man die restlichen Dateien neu exportieren kann.
Wäre super wenn ihr mir helfen könntet.
Hallo zusammen,
durch unverständige Fehlerhafte Exporte ist folgendes Problem aufgetreten.
Es gibt knapp 100 Ordner mit einer Hand voll bis mehrere 1000 HTML Dateien darin die aufsteigend durchnummeriert sind jedoch gibt es bei einigen der größeren das Problem das aufgetreten das einige Dateien Fehlen.
Im Ordner sieht das dann circa so aus
1
2
3
4
5
231
232
233
234
271
272
719
720
721
739
740
741
742
..
Wie ersichtlich ist fehlen 2 Bereiche.
Ich würde nun gerne eine Batchdatei schreiben die im inneren des Ordners gestartet wird und guckt
gibt es "1.html"
wenn nein -> 1.html fehlt
wenn ja -> gibt es 2.html
wenn nein -> 2.html fehlt
usw.
Wenn eine Datei fehlt soll die Schleife abgebrochen werden und eine MassageBox oder ähnliches auftauchen in der man darüber informiert wird damit man die restlichen Dateien neu exportieren kann.
Wäre super wenn ihr mir helfen könntet.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 204862
Url: https://administrator.de/forum/suchschleife-batch-204862.html
Ausgedruckt am: 27.12.2024 um 07:12 Uhr
6 Kommentare
Neuester Kommentar
Hallo Nathalem, willkommen im Forum.
Versuche mal diesen Code:
Eine Unsicherheit besteht aber bereits im Ansatz. Wenn nur die letzten Dateien fehlen sollten (also nicht exportiert wurden), wirst du das so nie feststellen können.
Grüße
rubberman
Versuche mal diesen Code:
@echo off &setlocal EnableDelayedExpansion
set /a count=0, max=0
for /f "delims=" %%i in ('dir /a-d /b *.html^|findstr /rixc:"[1-9][0-9]*\.html"') do (
set /a count+=1
if %%~ni gtr !max! set /a max=%%~ni
)
echo Anzahl HTML Dateien: %count%
echo Groesster Dateiname: %max%.html
echo(
if %count%==%max% (echo *** OK ***) else echo *** Dateien fehlen^^! ***
echo(
pause
Eine Unsicherheit besteht aber bereits im Ansatz. Wenn nur die letzten Dateien fehlen sollten (also nicht exportiert wurden), wirst du das so nie feststellen können.
Grüße
rubberman
Hallo Nathalem,
zeigt dir fehlende Dateien im aktuellen Ordner an:
Du musst dafür sorgen, dass die "letzte" mit dem grössten Wert vorhanden ist.
Gruss!
zeigt dir fehlende Dateien im aktuellen Ordner an:
@echo off&setlocal enabledelayedexpansion
for %%i in (*.html) do if %%~ni gtr !cnt! set "cnt=%%~ni"
for /l %%i in (0,1,%cnt%) do if not exist "%%i.html" echo missing: %%~fi.html
pause
Du musst dafür sorgen, dass die "letzte" mit dem grössten Wert vorhanden ist.
Gruss!
Hallo Nathalem,
eine Bemerkung noch. Beide Lösungen stoppen nicht bei der ersten fehlenden Datei. Der Grund dafür ist, dass zunächst die Datei mit der größten Zahl als Dateiname gefunden werden muss. Während im Explorerfenster die Dateien numerisch geordnet erscheinen, wird in der Batchdatei (auf einem NTFS) die Sortierung alphanumerisch durchgeführt. Bei 1000 Dateien also bspw. so:
Man muss (wie Endoro gezeigt hat) anschließend numerisch aufsteigend jede einzelne Datei vergleichen um die fehlenden Dateien entsprechend geordnet anzuzeigen.
Grüße
rubberman
eine Bemerkung noch. Beide Lösungen stoppen nicht bei der ersten fehlenden Datei. Der Grund dafür ist, dass zunächst die Datei mit der größten Zahl als Dateiname gefunden werden muss. Während im Explorerfenster die Dateien numerisch geordnet erscheinen, wird in der Batchdatei (auf einem NTFS) die Sortierung alphanumerisch durchgeführt. Bei 1000 Dateien also bspw. so:
1.html
10.html
100.html
1000.html
101.html
102.html
103.html
104.html
105.html
106.html
107.html
108.html
109.html
11.html
...
Grüße
rubberman