Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Nummerierte Dateien auf Lückenlosigkeit überprüfen. Fehler in Datei ausgeben!

Frage Entwicklung Batch & Shell

Mitglied: Andichrist

Andichrist (Level 1) - Jetzt verbinden

25.10.2009 um 16:17 Uhr, 7440 Aufrufe, 10 Kommentare

Hallo,

ich habe sehr viele Dateien in einem Ordner auf Vollständigkeit zu überprüfen. Eventuell auftreten Lücken (fehlende Datein) mußten bisher mit erhöhtem Zeitaufwand aufgespürt werden.

Um mir die Arbeit zukünftig zu erleichtern, wäre es hilfreich eine Batch zu haben, die den Ordner durcharbeitet und jede "Lücke" (fehlende Nummer) in eine Datei zB. Fehler.log ausgibt!


Beispiel:

c:\Temp

3401.txt <- START (hier im Beispiel)
3402.txt
3403.txt
3404.txt
3406.txt
3407.txt
....
3634.txt
3635.txt
3640.txt
3641.txt
...
3997.txt
3998.txt
3999.txt
4000.txt <- ENDE (hier im Beispiel)

Hier sollte in der Fehler.log folgende Dateien als fehlende Dateien aufgelistet werden:

3405.txt
3636.txt
3637.txt
3638.txt
3639.txt


Anmerkung: START (hier 3401) und ENDE (4000) sind eindeutig und können für eine Schleife (von 3401 bis 4000) benutzt werden! START und ENDE variieren!

Zwei Szenarios sind möglich!

1) nur durchnummerierte Dateien -> 1234.txt
2) Nummer+Dateinamen 1234 Objekt Kala.txt

Es wäre schön, wenn jemand eine Lösung parat hätte!

Vielen Dank im Voraus
AndyChrist
Mitglied: bastla
25.10.2009 um 16:53 Uhr
Hallo Andy!

Falls ich das richtig verstehe (es ist nur der Anfang des Dateinamens zu prüfen, da im Anschluss an die laufende Nummer zusätzlicher Text folgen kann), könnte das etwa so aussehen (ist allerdings ungetestet):
01.
@echo off & setlocal 
02.
set "Ordner=C:\Temp" 
03.
set "Typ=txt" 
04.
set /a Von=3401 
05.
set /a Bis=4000 
06.
set "Log=D:\Fehler.log" 
07.
 
08.
set "DirList=%temp%\DirList.txt" 
09.
>"%DirList%" dir /b "%Ordner%\*.%Typ%" 
10.
if exist "%Log%" del "%Log%" 
11.
for /L %%i in (%Von%,1,%Bis%) do findstr /b "%%i" "%DirList%"||>>"%Log%" echo %%i.txt 
12.
del "%DirList%"
Grüße
bastla
Bitte warten ..
Mitglied: Andichrist
25.10.2009 um 18:40 Uhr
Hallo bastla,

prima die Batch ' Suche.bat' macht genau das, was sie machen soll! *TOP*

Jetzt hätte ich nur noch einen Vereinfachungswunsch beim Batchaufruf! ^^

Könnte man die Batch noch soweit anpassen, dass noch der Suchbereich als Parameter (VON -> BIS) beim Aufruf direkt mitgegeben werden könnte.

Also: suche 3401 4000

So müßte man die Batch nicht permanent wegen des Suchbereiches anpassen!

Gruß
Andy
Bitte warten ..
Mitglied: bastla
25.10.2009 um 18:53 Uhr
Hallo Andy!

Dazu brauchst Du ja nur die Zeilen 4 und 5 leicht zu ändern:
set /a Von=%1 
set /a Bis=%2
Zur Sicherheit kann natürlich vorweg noch geprüft werden, ob zumindest 2 Parameter angegeben wurden:
if [%2]==[] echo Verwendung: %~nx0 Von Bis & echo\ & pause & goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Andichrist
25.10.2009 um 23:47 Uhr
Hallo bastla,

ich danke Dir für Deine Lösung! Funktioniert 100%!

Ich mußte aber feststellen, das ein Batch-Aufruf per KLICK komfortabler ist!

Daher habe ich die VON/ BIS Abfrage in die Batch eingebaut!

Für die Leute die diese Lösung bevorzugen, einfach Zeile 4 und 5 (siehe Script von bastla) ersetzen!

echo Bitte START-Wert (VON) angeben: 
set /p Von=%1  
 
echo Bitte END-Wert (BIS) angeben: 
set /p Bis=%2

Viele Grüße
Andy
Bitte warten ..
Mitglied: bastla
25.10.2009 um 23:55 Uhr
Hallo Andy!

Eigentlich genügte auch:
set /p Von=Bitte START-Wert (VON) angeben:  
set /p Bis=Bitte END-Wert (BIS) angeben: 
Grüße
bastla
Bitte warten ..
Mitglied: Andichrist
26.10.2009 um 00:03 Uhr
'Alla gut' - überzeugt! *grins*

Du bist der Experte!

Sieht besser aus als mein gebasteltes.

Gruß
Andy
Bitte warten ..
Mitglied: Spencer099
01.12.2010 um 00:12 Uhr
Hallo Bastla,

ich habe ein ähnliches Problem!
Vielleicht kannst du mir auch dabei helfen.
Ich muss in einem Verzeichniss überprüfen ob die Dateien fortlaufen sind oder doppelt sind!
Dateinamen sind wie folgt aufgebaut:
XXX00001_Beschreibung.pdf
XXX =Fixer Bestandteil 3 Stellig z.B. SCN
00001=fortlaufende Numerierung 5 Stellig
_=Trennzeichen
Beschreibung=Varibler Zusatztext z.B Privat oder Bild etc.

Im Verzeichniss liegen z.B. die folgenden Dateien:
SCN00001_Privat.pdf
SCN00002_Bild.pdf
SCN00003_Privat-Informationen.pdf
.
.
.SCN00622_Privat-.pdf

Es soll also nur geprüft werden ob die ersten 8 Zeichen im Dateinamen doppelt sind und fortlaufend.
Eine Ausgabe der Fehlerdatei über eine Log Datei reicht mir komplett aus.
Hast du dafür eine Idee

Vielen Dank Martin
Bitte warten ..
Mitglied: bastla
01.12.2010 um 19:51 Uhr
Hallo Spencer099!

Könnte etwa so gehen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Viele Dateien" 
03.
set "Maske=*_*.pdf" 
04.
set "Fix=SCN" 
05.
set "Log=D:\Fehler.log" 
06.
 
07.
set "DirList=%temp%\DirList.txt" 
08.
type nul>"%DirList%" 
09.
del "%Log%" 2>nul 
10.
set /a Nr=100000 
11.
set "Fehlende=" 
12.
for %%i in ("%Ordner%\%Maske%") do call :ProcessFile "%%~nxi" 
13.
if defined Fehlende ( 
14.
    echo\ 
15.
    echo Nummern nicht fortlaufend - erste Fehlende: %Fehlende% 
16.
)>>"%Log%" 
17.
del "%DirList%" 2>nul 
18.
goto :eof 
19.
 
20.
:ProcessFile 
21.
for /f "delims=_" %%a in (%1) do set "Kennz=%%a" 
22.
set /a Nr+=1 
23.
if "%Kennz%" neq "%Fix%%Nr:~-5%" if not defined Fehlende set "Fehlende=%Fix%%Nr:~-5%" 
24.
findstr "%Kennz%" "%DirList%">nul && >>"%Log%" echo Doppelt: %~1 || >>"%DirList%" echo %Kennz% 
25.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Spencer099
01.12.2010 um 21:05 Uhr
Hallo Bastla,

erste einmal vielen Dank für die schnelle Antwort.
Leider geht es nicht er schreibt mit in der Fehler.log folgendes hinein:


Nummern nicht fortlaufend - erste Fehlende: SCN00001

Hast du da noch eine Idee?

Grüße Spencer099
Bitte warten ..
Mitglied: bastla
01.12.2010 um 21:17 Uhr
Hallo Spencer099!

Wenn die Daten in den Zeilen 2 bis 4 an Deine Gegebenheiten angepasst sind, kann ich mir das Ergebnis nicht erklären - um aber zumindest die Eventualität Groß-/Kleinschreibung hinsichtlich des "fixen" Teil "SCN" zu berücksichtigen, verwende bitte folgende Zeile 23:
if /i "%Kennz%" neq "%Fix%%Nr:~-5%" if not defined Fehlende set "Fehlende=%Fix%%Nr:~-5%"
[Edit]
bzw verwende besser diese Version:
if "%Kennz:~3,5%" neq "%Nr:~-5%" if not defined Fehlende set "Fehlende=%Nr:~-5%"
- damit wird tatsächlich nur noch die Nummer geprüft.

Um dies auch für die Dubletten so umzusetzen, könntest Du gleich den gesamten letzten Teil austauschen:
01.
:ProcessFile 
02.
for /f "delims=_" %%a in (%1) do set "Kennz=%%a" 
03.
set "Kennz=%Kennz:~3,5%" 
04.
set /a Nr+=1 
05.
if "%Kennz%" neq "%Nr:~-5%" if not defined Fehlende set "Fehlende=%Nr:~-5%" 
06.
findstr "%Kennz%" "%DirList%">nul && >>"%Log%" echo Doppelt: %~1 || >>"%DirList%" echo %Kennz% 
07.
goto :eof
[/Edit]

Um den Ablauf besser nachvollziehen zu können, wäre es auch sinnvoll, aus dem "echo off" in Zeile 1 (vorübergehend) ein "echo on" zu machen und den Batch aus der CMD-Shell zu starten bzw zumindest unmittelbar vor Zeile 18 eine Zeile
pause
einzufügen.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Nummerierte dateien lücke finden .batch
Frage von franky89Batch & Shell2 Kommentare

hallo zusammen :) ich habe eine Vielzahl an Dateien mit Messwerten die folgender maßen aussehen: xxxx0001_000.txt xxxx0002_000.txt xxxx0003_000.txt xxxx0004_000.txt ...

Batch & Shell
Batchdatei soll überprüfen, ob auf eine Log Datei
Frage von hoppalaBatch & Shell1 Kommentar

Hiho :) ! Ein Freund und ich haben eine Batchdatei erstellt, leider kommen wir bei einer Sache nicht weiter. ...

Windows 10
PowerShell mit LastWriteTime Dateien überprüfen
Frage von mr.kkevWindows 101 Kommentar

Hallo liebe Experten Momentan bin ich ein Skript am Schreiben, welches Erstellte PDFs auf ihr Datum überprüft. Leider habe ...

Batch & Shell
Zeilen aus Datei auf einem Netzwerkspeicher einlesen und NUMMERIERT auflisten in BATCH
gelöst Frage von Fabian-HaasBatch & Shell10 Kommentare

Hallo, Ich möchte mithilfe einer Batchdatei verschiedene Netzwerkfreigaben eines Benutzers nummeriert auflisten. Diese sind in einer Datei auf dem ...

Neue Wissensbeiträge
Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 2 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit7 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...