Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

PDF umbenennen, Namen aus TXT an variabler Stelle auslessen sowie Ordnerstruktur aus altem Dateinamen

Frage Entwicklung Batch & Shell

Mitglied: s.lamers

s.lamers (Level 1) - Jetzt verbinden

21.04.2014, aktualisiert 22:12 Uhr, 1412 Aufrufe, 6 Kommentare, 3 Danke

Hallo zusammen,

ich habe folgendes Problem, ich habe einen Ordner mit ca. 6000 PDF's + 6000 TXT Dateien. Es sind eingescannt Faxe, welche von einem OCR-Programm in durchsuchbare PDF Dateien konvertiert wurden. Außerdem wurde der komplette Inhalt der PDF's unter gleichem Dateinamen noch mal als TXT Datei abgespeichert. Es kommen ca. 150 Dateien täglich dazu.

Jetzt steht in einer der ersten 3 Zeilen der Dateiname in der TXT Datei immer hinter dem Wort "liste" und ist immer 8 Zeichen lang. Teilweise kommt es aber auch noch vor, das eine liste über mehrere Seiten geht, weshalb der Dateinamen dann erweitert werden müsste mit einer fortlaufenden Nummer. Für den Fall das das Wort liste nicht gefunden wird ist es was manuelles, weshalb auch diese erkennbar sein sollten.

Zur Veranschaulichung mal ein kleines Beispiel:

Dateien sind gespeichert nach dem Muster:
C:\Eingang\21.04.2014_0001.pdf
C:\Eingang\21.04.2014_0001.txt
C:\Eingang\21.04.2014_0002.pdf
C:\Eingang\21.04.2014_0002.txt
C:\Eingang\21.04.2014_0003.pdf
C:\Eingang\21.04.2014_0003.txt
C:\Eingang\21.04.2014_0004.pdf
C:\Eingang\21.04.2014_0004.txt

Ergebniss sollte in etwa so ausschauen:
C:\Sortiert\2014\04\21\11111111_1-2.pdf (liste 1 von 2 Seiten)
C:\Sortiert\2014\04\21\11111111_2-2.pdf (liste 2 von 2 Seiten)
C:\Sortiert\2014\04\21\22222222.pdf (liste 1 Seite lang)
C:\Sortiert\2014\04\21\manuell_1-1.pdf (Sort liste nicht gefunden)

Die TXT Dateien können nach dem sortieren gelöscht werden.

Ist so etwas überhaupt lösbar über eine Batchdatei? Gibt es jemanden, der mir hierbei helfen kann?

Vielen Dank.

Gruß
Mitglied: Xaero1982
LÖSUNG 21.04.2014, aktualisiert um 22:12 Uhr
Tach,

noch nicht ganz klar:

C:\Sortiert\2014\04\21\11111111_1-2.pdf (liste 1 von 2 Seiten)
C:\Sortiert\2014\04\21\11111111_2-2.pdf (liste 2 von 2 Seiten)

Es gibt doch aber nur eine PDF oder? Zumindest ausgehend von deinem Muster.

Und ich denke schon, dass das lösbar ist. Da wird der Bastla oder so sicher was haben.

Gruß
Bitte warten ..
Mitglied: s.lamers
21.04.2014 um 14:39 Uhr
Moin,

noch einmal zur Verdeutlichung.

das Muster:
C:\Eingang\21.04.2014_0001.pdf (Entspricht der 1sten Seite des Faxes und ist liste 11111111 und davon die Seite 1)
C:\Eingang\21.04.2014_0001.txt
C:\Eingang\21.04.2014_0002.pdf (Entspricht der 2ten Seite des Faxes und ist liste 11111111 und davon die Seite 2)
C:\Eingang\21.04.2014_0002.txt
C:\Eingang\21.04.2014_0003.pdf (Entspricht der 3ten Seite des Faxes und wäre jetzt liste 22222222 mit nur 1ner Seite)
C:\Eingang\21.04.2014_0003.txt
C:\Eingang\21.04.2014_0004.pdf (Entspricht der 4ten Seite des Faxes und enthält das Wort liste nicht, ist somit etwas manuelles und davon die 1te Seite)
C:\Eingang\21.04.2014_0004.txt

da das alles Faxe sind, welche eingescannt wurden, sind die zusammenhängende Listen nicht mehr in einer Datei zusammen. Und es kommt leider vereinzelt vor, das einige dieser listen 2-3 Seiten lang sind. Haben aber in diesem Fall auch die selbe Kopfzeile, nur das sich dann die Listennummer wiederholen würden, weshalb der Gedanke _1-2, _2-2 dranzuhängen kommt. Es könnte ja aber auch durchaus mal vorkommen, das das OCR Programm eine Nummer falsch erkennt (statt einer 6 eine 8) und wenn dann diese Nummer doppelt erkannt werden sollte, möchte ich vermeiden, das eine der Dateien überschrieben wird.

In der TXT Datei steht dann teilweise in der 1 - 2 Zeile etwas was manuell raufgekritzelt wurde, und dann in der 3ten Zeile kommt nach einem variabel langen Text das Wort liste und danach die 8 Zahlen welche der Dateiname werden sollten. Ist aber nichts dazugeschrieben worden, steht diese Zahl auch schon mal in Zeile 1. Das Wort liste wiederholt sich noch einmal in der letzten Zeile jeder Datei, und gibt dort Preis von wo aus sie verschickt worden ist. (5 stellige Nummer davor sowie einige Zeichen hinter dem Wort)

Gruß
Bitte warten ..
Mitglied: bastla
LÖSUNG 21.04.2014, aktualisiert um 22:12 Uhr
Hallo s.lamers und willkommen im Forum!

Oberflächlich getestet etwa so:
01.
@echo off & setlocal 
02.
Set "Ein=C:\Eingang" 
03.
set "Aus=C:\Sortiert" 
04.
set "Such=liste" 
05.
set /a ZeilenAnzahl=3 
06.
set "Typ=pdf" 
07.
set /a Stellen=2 
08.
 
09.
for %%i in ("%Ein%\*.txt") do call :ProcessFile "%%i" 
10.
goto :eof 
11.
 
12.
:ProcessFile 
13.
for /f "tokens=1-3 delims=._" %%a in ("%~n1") do set "Tag=%%a" & set "Monat=%%b" & set "Jahr=%%c" 
14.
set "Ziel=%Aus%\%Jahr%\%Monat%\%Tag%" 
15.
md "%Ziel%" 2>nul 
16.
 
17.
set "Zeile=" & set "Name=manuell" 
18.
for /f "tokens=1* delims=:" %%a in ('findstr /ni "%Such%" %1') do if %%a leq %ZeilenAnzahl% set "Zeile=%%b" 
19.
if not defined Zeile goto :Check 
20.
call set "Zeile=%%Zeile:*%Such%=%%" 
21.
for /f %%a in ("%Zeile%") do set "Name=%%a" 
22.
set "Name=%Name:~,8%" 
23.
 
24.
:Check 
25.
set /a Nr=1000001 
26.
set "Dateiname=%Name%.%Typ%" 
27.
:Loop 
28.
if not exist "%Ziel%\%Dateiname%" copy %1 "%Ziel%\%Dateiname%">nul & goto :eof 
29.
set /a Nr+=1 
30.
call set "Dateiname=%Name%_%%Nr:~-%Stellen%%%.%Typ%" 
31.
goto :Loop
Da Du die Inhalte der Zeilen mit "liste" nicht näher beschrieben hast, gehe ich davon aus, dass zwischen "liste" und dem 8-stelligen Dateinamen allenfalls eine unbestimmte Anzahl von Leerzeichen, aber kein anderer Text stehen kann.

In den Zeilen 4 und 5 kannst Du den Suchbegriff und die Anzahl der Zeilen ab Dateianfang, in denen dieser Begriff gesucht werden soll, festlegen - lt Deiner Vorgabe sind das "suche" und 3 Zeilen.

Eine Einschränkung gibt es hinsichtlich der Benennung von mehrseitigen Listen: Es wird erst ab der zweiten Seite eine 2-stellige (die Stellenanzahl kannst Du in Zeile 7 mit max 6 festlegen) Seitennummer (ohne Gesamtzahl der Seiten - diese steht ja meines Wissens nicht in der ersten Datei und ist damit vorweg nicht bekannt) hinzugefügt, sodass das Ergebnis für die ersten beiden Dateien Deines Beispiels (mit 2-stelliger Seitennummer) so aussieht:
C:\Sortiert\2014\04\21\11111111.pdf 
C:\Sortiert\2014\04\21\11111111_02.pdf
Auch für Dateien, in denen "liste" nicht gefunden wurde, wird bei Bedarf eine 2-stellige Laufnummer hinzugefügt, sodass also zB
C:\Sortiert\2014\04\21\manuell.pdf 
C:\Sortiert\2014\04\21\manuell_02.pdf 
C:\Sortiert\2014\04\21\manuell_03.pdf
entstünden.

Grüße
bastla
Bitte warten ..
Mitglied: s.lamers
21.04.2014 um 22:26 Uhr
Guten Abend bastla,

vielen Dank für das Script ;) Habe eine Kleinigkeit geändert, da mir hier die TXT Dateien kopiert wurden und nicht die PDF's.

Zeile 28:
if not exist "%Ziel%\%Dateiname%" copy"%~n1.%Typ%" "%Ziel%\%Dateiname%">nul & goto :eof
Ansonsten ist es genau das was ich gesucht habe :D

Danke, und einen schönen Abend noch.

Gruß
s.lamers
Bitte warten ..
Mitglied: bastla
21.04.2014 um 23:44 Uhr
Hallo s.lamers!

Oberflächlich getestet war leider genau die richtige Beschreibung ...

Freut mich, dass Du's hinbekommen hast.

Grüße
bastla
Bitte warten ..
Mitglied: s.lamers
22.04.2014 um 16:26 Uhr
Hallo bastla,

mit dieser Vorlage ;) Alleine hätte ich das allerdings niemals geschafft.

Danke

Gruß

s.lamers
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(2)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (10)

Frage von 1410640014 zum Thema Backup ...