samuelt
Goto Top

Nummerierte Dateien auf Vollständigkeit überprüfen.

Hallo alle, ich bin nicht der script crack und bräuchte bitte eure Hilfe.

Ich habe einen Ordner mit PDF Dateien, diese sind immer nach dem selben "Schema" vorhanden / aufgebaut:

Dateiname einmal: F13020431.pdf und selber Aufbau nur anstelle von "F" steht "G"

Beide Varianten sind aber im selben Ordner. Mir wäre schon geholfen wenn ich einfach manuel die Abfrage (script) von F auf G ändere und durchlaufen lasse.

Was ich herausfinden muss ist ob die fortlaufenden Nummern der Dateinamen auch lückenlos vorhanden sind, und wenn nicht die Fehlende(n) in eine Logdatei ausgeben, als Liste.

Es gab mal einen ähnlichen Artikel 2010 im Forum, aber leider bin ich damit gar nicht zurecht gekommen, weil ich eben ein völliger script Trottel bin face-sad

Ich hoffe ihr könnt mir helfen?

Vorab schon mal vielen Dank!!!!!

Grüße Samuel

Content-ID: 190384

Url: https://administrator.de/forum/nummerierte-dateien-auf-vollstaendigkeit-ueberpruefen-190384.html

Ausgedruckt am: 04.04.2025 um 05:04 Uhr

bastla
bastla 29.08.2012 um 09:59:06 Uhr
Goto Top
Hallo samuelT!

Wenn Du Anfangs- und Endwert der Nummern kennst, sollte etwas in der Art funktionieren (zum Testen direkt in CMD; wenn Du einen Batch daraus machen willst, jeweils "%%i" anstatt "%i" verwenden):
for /L %i in (13020400,1,13020450) do @if not exist "F%i.pdf" >>Fehlende.txt echo %i
Grüße
bastla
samuelT
samuelT 29.08.2012 um 10:27:26 Uhr
Goto Top
Hallo bastla,
is ja Geil!!! Sorry, aber das funktioniert SUPER!!! Vielen Dank für deine schnelle Hilfe.

Kann ich das ganze auch in ne Batch verpacken und den Ort des Ordners angeben bzw den Ausgabe "Ort" für die Fehler Log?

Grüße Samuel
bastla
bastla 29.08.2012 um 11:06:01 Uhr
Goto Top
Hallo samuelT!
Kann ich das ganze auch in ne Batch verpacken und den Ort des Ordners angeben bzw den Ausgabe "Ort" für die Fehler Log?
Etwa so:
@echo off & setlocal
set "Ordner=D:\Dein Ordner"  
set "Log=D:\Fehlerlog.txt"  
set /a Von=13020400
set /a Bis=13020450

del "%Log%" 2>nul  
for /L %%i in (%Von%,1,%Bis%) do (
    if not exist "%Ordner%\F%i.pdf" echo F%%i  
    if not exist "%Ordner%\G%i.pdf" echo G%%i  
)>>"%Log%"  
Grüße
bastla
samuelT
samuelT 29.08.2012 um 11:11:55 Uhr
Goto Top
Perfekt!!! Vielen Dank!!!!
Grüße Samuel
andimue
Lösung andimue 29.08.2012, aktualisiert am 10.02.2014 um 20:04:56 Uhr
Goto Top
Hi,

ich habs noch ein bisschen weitere automatisiert, so dass nun die F-Dateien und die G-Dateien in einem Aufruf abgearbeitet werden und die erste und letzte Nummer selbstständig ermittelt wird (quick&dirty aber tut)

Gruß Andi

@echo off
setlocal enableDelayedExpansion

::
::Variablendefinitionen
::
set "logfile=%temp%\Fehlende.txt"  


set "first=*init*"  
set "last="  



::
:: jetzt gehts los - Durchlauf fuer F-Dateien
::
set "letter=f"  
call :sub1
call :sub2 %first% %last% %letter%
::
:: jetzt gehts los - Durchlauf fuer G-Dateien
::
set "letter=g"  
set "first=*init*"  
call :sub1
call :sub2 %first% %last% %letter%
goto :EOF

::##################################################################
:sub1
for /f  %%a in ('dir %letter%*.pdf /b /on') do (  
	if !first!==*init* 	(	
				set "first=%%a"  
				) 
	set "last=%%a  
						)
goto :EOF
::##################################################################
:sub2
set "first=%~n1"  
set "first=%first:~1,99%"  
set "last=%~n2"  
set "last=%last:~1,99%"  
echo first = %first%
echo last = %last%
for /L %%i in (%first%,1,%last%) do @if not exist "%3%%i.pdf" >>%logfile% echo %3%%i.pdf  
goto :EOF
::##################################################################