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-Key: 190384

Url: https://administrator.de/contentid/190384

Printed on: April 20, 2024 at 02:04 o'clock

Member: bastla
bastla Aug 29, 2012 at 07:59:06 (UTC)
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
Member: samuelT
samuelT Aug 29, 2012 at 08:27:26 (UTC)
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
Member: bastla
bastla Aug 29, 2012 at 09:06:01 (UTC)
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
Member: samuelT
samuelT Aug 29, 2012 at 09:11:55 (UTC)
Goto Top
Perfekt!!! Vielen Dank!!!!
Grüße Samuel
Member: andimue
Solution andimue Aug 29, 2012, updated at Feb 10, 2014 at 19:04:56 (UTC)
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
::##################################################################