hoelderlin
Goto Top

Wie lassen sich Dateinamen mittels Batchdatei ergänzen?

Als neues Forumsmitglied und ohne formale Fachkenntnisse bitte ich um Nachsicht hinsichtlich der Präsentation meines Anliegens.

Ausgangssituation:
Pdf-Dateien in einem bestimmten Ordner (A) sollen
- mittels vorhandener OCR-Software durchsuchbar gemacht werden und
- als durchsuchbar gekennzeichnet werden sowie
- in diesem Ordner (A) neben den Originaldateien gespeichert werden.
(Betriebssystem Windows XP Professional, SP 3.)

Problem:
Die OCR-Software überschreibt die pdf-Originaldateien, erlaubt also keine Dateinamens-Ergänzung.

Work-Around:
Die OCR-Software kann die Dateien auch in einem beliebigen anderen Ordner (B) speichern.

Lösungsidee:
Speicherung in Ordner B und später Ergänzung der originalen Dateinamen in Ordner B durch z. B. "-OCR" mittels Batchdatei, sodass aus "Dateiname.pdf" "Dateiname-OCR.pdf wird".
(Anschliessend Verschieben der umbenannten Dateien mittels weiterer Batchdatei in den Ordner A, sodass dort sowohl die originalen als auch die durchsuchbaren pdf-Dateien verfügbar sind. Ein solches Skript habe ich bereits gefunden.)

Darf ich mich mit der Bitte um Unterstützung an das Forum wenden?
Kommentar vom Moderator Biber am Apr 29, 2011 um 22:29:02 Uhr
Den (bis auf die suboptimale Bereichswahl vorbildlichen) Beitrag verschoben von "Windows wohl" nach "Batch & Shell".

Content-Key: 165147

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

Printed on: April 19, 2024 at 23:04 o'clock

Mitglied: 60730
60730 Apr 25, 2011 at 16:46:36 (UTC)
Goto Top
moin und willkommen,
Kannst du bitte noch mal etwas ausführlicher ausholen?
Pdf-Dateien in einem bestimmten Ordner (A) sollen mittels vorhandener OCR-Software durchsuchbar gemacht werden
  • ich nutze alles mögliche und unter anderem auch einen Indizierer (http://www.mnogosearch.org/), der PDFs ohne großes tamtamm durchsuchen kann.
Die OCR-Software überschreibt die pdf-Originaldateien, erlaubt also keine Dateinamens-Ergänzung.
  • welche nutzt du, kann die kommandozeilen abarbeiten, mußt du diese nehmen?
  • warum zwei /x Scripte wenn man alles mit einem Script lösen kann?

Gruß
Member: bastla
bastla Apr 25, 2011 at 16:49:15 (UTC)
Goto Top
Hallo hoelderlin und willkommen im Forum!

Schematisch (und ungetestet) etwa so:
@echo off & setlocal
set "Basis=D:\Ordner A"  
set "Suffix=-OCR"  

pushd "%Basis%"  
for /f "delims=" %%i in ('dir /b /a-d *.pdf^|findstr /i /v "%Suffix%"') do (  
    x:\OCR-Prog "%%i" %Temp%  
    move "%Temp%\%%i" "%%~ni%Suffix%%%~xi"  
)
popd
Es werden nach einem Wechsel in den Ordner "A" alle noch nicht bearbeiteten (also noch nicht den Zusatz "%Suffix%" enthaltenden) pdf-Dateien mit dem OCR-Programm (Zeile 7 anpassen) bearbeitet, das Ergebnis im %Temp%-Ordner gespeichert und von dort - bei gleichzeitiger Umbenennung - in den Basis-Ordner zurück verschoben.

Grüße
bastla
Member: hoelderlin
hoelderlin Apr 25, 2011 at 17:19:34 (UTC)
Goto Top
Hallo TimoBeil,

vielen Dank für die prompte Reaktion und das "Willkommen".
Ich hoffe, der Beitrag bleibt übersichtlich, wenn ich die Zitatfunktion nutze...

Zitat von @60730:
...
Kannst du bitte noch mal etwas ausführlicher ausholen?
> Pdf-Dateien in einem bestimmten Ordner (A) sollen mittels vorhandener OCR-Software durchsuchbar gemacht werden
tamtamm durchsuchen kann.
Es handelt sich um reine pdf-Bilddateien ab Scanner, deren allfälliger Textinhalt erst mittels OCR erschlossen werden muss. Ein Indizierer wäre später noch sehr interessant, allerdings führte der Link ins Leere.

> Die OCR-Software überschreibt die pdf-Originaldateien, erlaubt also keine Dateinamens-Ergänzung.
  • welche nutzt du, kann die kommandozeilen abarbeiten, mußt du diese nehmen?
Ich nutze OmniPage Professional V17.0. Einen Kommandozeileneditor konnte ich bei der Software nicht finden. Zu wechseln kommt eher nicht in Frage.

* warum zwei /x Scripte wenn man alles mit einem Script lösen kann?
Aus rein didaktischen Gründen: ich wollte etwas lernen, und dafür sollte es übersichtlich bleiben face-wink Ausserdem hatte ich bereits eine Batchdatei zum Verschieben gefunden.

Viele Grüsse!
Member: hoelderlin
hoelderlin Apr 25, 2011 at 17:44:51 (UTC)
Goto Top
Hallo bastla,

auch dir vielen Dank für den freundlichen Empfang und gleich noch die Lösung zu meiner Frage.
Ich habe mal in der kurzen Zeit bis zu meiner Antwort versucht, das Skript zu durchleuchten, war aber doch überfordert durch Variablen, Parameter etc.; "pushd" und "popd" bin ich noch am suchen ...

Es werden nach einem Wechsel in den Ordner "A" alle noch nicht bearbeiteten (also noch nicht den Zusatz
"%Suffix%" enthaltenden) pdf-Dateien mit dem OCR-Programm (Zeile 7 anpassen) bearbeitet, das Ergebnis im %Temp%-Ordner
gespeichert und von dort - bei gleichzeitiger Umbenennung - in den Basis-Ordner zurück verschoben.
Obwohl die Lösung keine Wünsche mehr offen lässt, indem sie offenbar den kompletten Ablauf integriert und automatisiert, samt Aufruf der OCR-Software - könnten wir das Skript vorerst noch in Einzelteile skelettieren, damit ich es besser verstehen kann?

Wie würde die Befehlsfolge aussehen, wenn es zunächst nur um das Umbenennen der (bereits durchsuchbaren) pdf-Dateien in dem Ordner B geht, in dem sich auch das Skript befinden könnte?

Nochmals vielen Dank
und viele Grüsse

PS. Zum Nachsehen hinsichtlich Syntax habe ich diesen Link verwendet: http://de.wikibooks.org/wiki/Batch-Programmierung
Vielleicht gibt es ja noch einen anderen Tipp, damit ich mich schneller reinfinde...
Member: bastla
bastla Apr 25, 2011 at 17:55:33 (UTC)
Goto Top
Hallo hoelderlin!

Das Umbenennen erfolgt in der Zeile 8 des obigen Batches - dabei wird auch gleichzeitig verschoben (und ich sehe eigentlich keinen Sinn darin, diesen Vorgang "künstlich" zu trennen) ...

Wenn Du bereits einen Ordner "D:\Ordner B" mit den entsprechenden Dateien befüllt hast, müsste der Batch etwa so aussehen:
@echo off & setlocal
set "Basis=D:\Ordner B"  
set "Ziel=D:\Ordner A"  
set "Suffix=-OCR"  

pushd "%Basis%"  
for /f "delims=" %%i in ('dir /b /a-d *.pdf"') do (  
    if not exist "%Ziel%\%%~ni%Suffix%%%~xi" move "%%i" "%Ziel%\%%~ni%Suffix%%%~xi"  
)
popd
Zu "pushd" und "popd": damit wird ein Ordner vorübergehend zum aktuellen Ordner gemacht (wodurch die Angabe des Pfades in den einzelnen Verarbeitungsschritten nicht mehr nötig ist) bzw am Ende wieder zum (zwischengespeicherten) vorherigen Ordner zurückgewechselt.

Mit "%%~ni" und "%%~nx" werden Name und Extension (Dateityp) der gerade in der Schleife behandelten Datei "%%i" extrahiert - siehe dazu "for /?" (ziemlich gegen Ende).
BTW: Du kannst für alle CMD-Befehle mit "Befehl /?" eine Online-Hilfe aufrufen.

In dieser Variante hier wird vor dem Verschieben (und Umbenennen) der Datei aus dem "B"-Ordner zunächst geprüft, ob noch keine gleichnamige Datei (bereits mit dem Zusatz "-OCR") im "A"-Ordner existiert, da in einem Batch "move" ohne Rückfrage bestehende Dateien überschreibet - sollte ein Überschreiben aber ohnehin gewünscht sein, einfach die Zeile 8 auf
move "%%i" "%Ziel%\%%~ni%Suffix%%%~xi"
reduzieren ...

Falls Du tatsächlich gesteigerten Wert auf ein "Umbenennen ohne Verschieben" legen solltest, wäre der Befehl dafür "ren", und die Angabe des neuen Namens müsste ohne Zielordner vorgenommen werden).
Als Tipp: Es gibt hier im Forum sehr empfehlenswerte Tutorials (zB Tutorial zur FOR-Schleife).

Grüße
bastla

P.S.:
samt Aufruf der OCR-Software
würde voraussetzen, dass selbiger per Kommandozeile (mit den Übergabeparametern "Dateiname" und "Zielordner") möglich ist - falls nicht, müsste ohnehin das Erstellen der "durchsuchbaren" Dateien im Ordner "B" vorweg erledigt werden ...
Mitglied: 60730
60730 Apr 25, 2011 at 18:27:30 (UTC)
Goto Top
Salü,

Es handelt sich um reine pdf-Bilddateien ab Scanner, deren allfälliger Textinhalt erst mittels OCR erschlossen werden muss.
  • puh unter Windoof nutze und daher kenne ich keinen Bild2Textkonverter, der cmd basiert werkeln kann.
Ein Indizierer wäre später noch sehr interessant, allerdings führte der Link ins Leere.
!Kunststück - mit dem Apfel sieht alles anders aus. (nimm einfach die letzte klammer ) weg.
http://www.mnogosearch.org/

Gruß
Member: hoelderlin
hoelderlin Apr 25, 2011 at 19:05:56 (UTC)
Goto Top
Hallo bastla!

Ich habe selten in so kurzer Zeit so viel gelernt - sogar ohne didaktische Trennung von Umbenennen und Verschieben face-wink
Die Befehlsauswahl scheint mir ja hochraffiniert (%%~ni, %%~nx, pushd, popd,...), und mit Deiner Hilfe gleich noch verständlich.

Habe noch eben gegoogelt und die Eingabeaufforderung mit einigen Befehlen gefüttert bzw. die Hilfe dazu aufgerufen.

Die Prüfung auf gleichnamige Dateien macht durchaus Sinn, ich belasse die Bedingung gerne.

Falls Du tatsächlich gesteigerten Wert auf ein "Umbenennen ohne Verschieben" legen solltest, wäre der Befehl
dafür "ren", und die Angabe des neuen Namens müsste ohne Zielordner vorgenommen werden).
Nicht wirklich, es ging mir nur um die Didaktik, die dank Deiner Super-Erklärungen aber auch unabhängig davon elegant umgesetzt wurde. Dennoch probier' ich diese Variante sicher auch noch aus, wenn denn die Anleitung schon da ist ...

Als Nächstes werde ich das Skript in Betrieb nehmen und anschliessend gerne berichten.

Auch für die Tipps nochmals herzlichen Dank. Etwas Zeit ist dafür schon reserviert ...

> samt Aufruf der OCR-Software
würde voraussetzen, dass selbiger per Kommandozeile (mit den Übergabeparametern "Dateiname" und
"Zielordner") möglich ist - falls nicht, müsste ohnehin das Erstellen der "durchsuchbaren" Dateien
im Ordner "B" vorweg erledigt werden ...
Ich müsste bei OmniPage Professional V17 nochmals gezielt nachsehen, ob ein Start mit Kommandozeilenparametern möglich ist. Soweit hatte ich ursprünglich gar nicht gedacht, weil bereits der Umstand, dass ich keine Möglichkeit fand, vorhandene Dateinamen beim Speichern mit Ergänzungen zu versehen, recht viel von meiner Euphorie verbraucht hatte. face-wink
Im Moment gehe ich davon aus, dass ich die durchsuchbaren pdf-Dateien tatsächlich vorgängig in Ordner "B" erstellen muss.

Erst mal viele Grüsse
und nochmals ein DANKE

PS. Warum das "dir /b /a-d" noch im Code versteckt ist, frage ich jetzt absichtlich nicht, sondern werde das "Aha" beim Feedback nachliefern. face-wink Eine Ahnung, was dabei passiert habe ich schon...
Member: hoelderlin
hoelderlin Apr 25, 2011 at 19:38:07 (UTC)
Goto Top
Sali TimoBeil

Du nutzt Mac?

Jetzt hat der Link funktioniert, danke! - Die Klammer hatte ich übersehen ...
Der Indizierer wird offenbar nur für Linux als freie Software angeboten. Die Software scheint auch (bis auf die Lite-Version) etwas komplex zu sein.
Aber, es wäre ja auch erst der nächste Schritt, an den ich bisher nicht mal gedacht hatte ... Also mal sehen.

Grüsse
Member: hoelderlin
hoelderlin Apr 29, 2011 at 16:24:22 (UTC)
Goto Top
Nachtrag und Feedback


Hallo bastla!

Das Skript läuft nach einer Mini-Modifikation und sieht so aus (hoffe mal, ich bekomme das mit der Code-Formatierung hin):

@echo off & setlocal
set "Basis=C:\test\Ordner B"  
set "Ziel=C:\test\Ordner A"  
set "Suffix=-OCR"  

pushd "%Basis%"  
for /f "delims=" %%i in ('dir /b /a-d *.pdf') do (  
    if not exist "%Ziel%\%%~ni%Suffix%%%~xi" move "%%i" "%Ziel%\%%~ni%Suffix%%%~xi"  
)
popd



REM  *.pdf"' musste noch in  *.pdf' geändert werden  

Dies ist die zugehörige Ordnerstruktur:
C:\test\Ordner A
C:\test\Ordner B

Das Nur-Umbenennen-Skript ging auch:

@echo off & setlocal
set "Suffix=-OCR"

for /f "delims=" %%i in ('dir /b /a-d *.pdf') do (
    ren "%%i" "%%~ni%Suffix%%%~xi"
)

Meine Nachfrage beim Support von Nuance betr. Omni Page Professional V17 ergab, dass sich das Programm angeblich nicht per Kommandozeilen steuern lässt ...

Nochmals ein herzliches Dankeschön für die Hilfe
und schönes Wochenende!
Member: bastla
bastla Apr 29, 2011 at 16:32:48 (UTC)
Goto Top
Hallo hoelderlin!

Ich danke Dir für einen wirklich vorbildlichen Beitrag ... face-smile

... und solltest Du doch noch auf eine commandline-taugliche Alternative zu "Omni Page" stoßen, wird das sicher viele hier interessieren.

Auch Dir ein schönes Wochenende!
bastla