valume91
Goto Top

Datei Eigenschaften per Batch ändern

Benötige Hilfe bei einer Batch Datei.

Hallo zusammen

Folgendes Szenario:
Ich habe in einem Ordner hunderte PDF Dateien.
Diese sind wie folgt aufgebaut (Beispiele):
"327209 3_29_0334.pdf"
"328644 3_27_0064.pdf"
"328644 3_29_0005 A.pdf"
"3_29_0001 1.pdf"
"3_28_0009.pdf"

Nun möchte ich ein Script schreiben welches jeweils den folgenden Teil:
Bsp. 3_29_0005
des Dateinamens nimmt und bei den Eigenschaften der Datei als Titel einträgt.

Das auslesen des genannten Teils könnte ich mit meinen knappen Batch Kentnissen schaffen,
allerdings habe ich keine Ahnung wie ich den Titel des Dokuments bearbeiten kann.

MfG Valume

Content-ID: 172283

Url: https://administrator.de/forum/datei-eigenschaften-per-batch-aendern-172283.html

Ausgedruckt am: 23.12.2024 um 11:12 Uhr

60730
60730 30.08.2011 um 15:41:38 Uhr
Goto Top
moin,

zum Thema "stricken mit und um PDF Dateien" kann ich dir nur den Rat geben


Aber - ok du schreibst das du das schon gelöst hast...

Nun möchte ich ein Script schreiben welches jeweils den folgenden Teil:
*__** (Bsp. 3_29_0005)

Wie du von
3_29_0005 auf  *__** 
kommst - das verstehe ich nicht wirklich..... face-sad

Gruß
Skyemugen
Skyemugen 30.08.2011 um 15:47:29 Uhr
Goto Top
Zitat von @60730:
Wie du von
3_29_0005 auf  *__** 
kommst - das verstehe ich nicht wirklich..... face-sad

Aloha T-Mo,
[OT]
weil deine Augenklappe vom Avatar zu eng sitzt *stänker*

Ist doch nur ein zu schneller Tipper von *_*_* zu *__** - das fehlende Korrekturlesen kann man ihm jetzt vorwerfen face-wink aber das kann man vielen Leuten hier, die Threads erstellen
[/OT]
greetz André
Valume91
Valume91 30.08.2011 um 15:49:51 Uhr
Goto Top
Hi TimoBeil

Sorry mein (?) Fehler.
Sollte eigentlich heissen:
1_11_1111 (ersetzte die 1en durch *e)

Was du genau mit PDFTK bewirken willst verstehe ich allerdings nicht.
Ich möchte blos ein Teil des Dateinamens als Titel der Datei speichern (Rechtsklick--> Eigenschaften --> Dateiinfo).
Da spielt es keine Rolle ob das nun ein pdf oder ein txt file ist.

Aber vieleicht verstehe ich dich auch falsch.

lg Valume
99045
99045 30.08.2011 um 15:53:11 Uhr
Goto Top
gelöscht. Irgendwie war da im letzten Beitrag des TE der Wurm drin.
99045
99045 30.08.2011 um 16:09:46 Uhr
Goto Top
Zitat von @Valume91:
Das auslesen des genannten Teils könnte ich mit meinen knappen Batch Kentnissen schaffen,
Das halte ich für ein Gerücht, du schaffst es ja nicht einmal, vernüftig zu beschreiben, was du eigentlich im Dateinamen womit ersetzen willst.

allerdings habe ich keine Ahnung wie ich den Titel des Dokuments bearbeiten kann.
Vielleicht mit dem Programm, das dir TimoBeil genannt hat. Mit Batch jedenfalls nicht.
rubberman
rubberman 30.08.2011 um 16:16:49 Uhr
Goto Top
Hallo Valume91.

Per Batch auf die erweiterten Dateieigenschaften zuzugreifen geht IMHO garnicht.
Mit Bordmitteln kannst du VBScript benutzen, aber auch nur zum Lesen der Eigenschaften. Zum Schreiben / Ändern ist mir keine scriptbare Methode bekannt.
Sicher gibt es Tools, die du dir downloaden kannst und diese Arbeit für dich verrichten.

Grüße
rubberman
Skyemugen
Skyemugen 30.08.2011 um 16:24:23 Uhr
Goto Top
Zitat von @Valume91:
Was du genau mit PDFTK bewirken willst verstehe ich allerdings nicht.
Ich möchte blos ein Teil des Dateinamens als Titel der Datei speichern (Rechtsklick--> Eigenschaften --> Dateiinfo).
Da spielt es keine Rolle ob das nun ein pdf oder ein txt file ist.

Aber vieleicht verstehe ich dich auch falsch.

Aloha,

vielleicht drückst du dich dann nicht genügend aus?

PDFTK kann Metadaten von PDF ändern, ich gehe davon aus, dass darunter auch Titel fällt, wenn du also im EP etwas von
Ich habe in einem Ordner hunderte PDF Dateien.
schreibst, wäre T-Mos Link genau das, was du benötigst.

Solltest du jedoch weitere Dateitypen haben, für dein Vorgehen, dürfte das nur mit VisualBasic (eventuell sogar VisualBasicScript) umsetzbar sein.

greetz André
60730
60730 30.08.2011 um 16:36:12 Uhr
Goto Top
Servus,

ok - wenn es "so" ist...

Du brauchst:
*`ein Script, dass ~ sowas macht:

If WScript.Arguments.Count <> 2 Then
   msgbox "Aufruf so nicht richtig"  
Else

Dim Obj, File, Info
Set Obj = WScript.Arguments
File = Obj(0)
Info = Obj(1)
Set objFile = CreateObject("DSOFile.OleDocumentProperties")  
objFile.Open(File)
objFile.SummaryProperties.Title = Info
objFile.Save
end if

Und ein anderes Script, das dieses mit cscript /nologo Dateiname Dateiinfo aufruft.

So jetzt hab ich da xxx minuten getestet, telefoniert und Gedöhnst, der Fred ist zu 99.9% eh erledigt - who cares...

gruß
bastla
bastla 30.08.2011, aktualisiert am 18.10.2012 um 18:48:06 Uhr
Goto Top
@t-mo
Danke für das DSO-Beispiel face-smile - [Edit] kannte ich auch noch nicht hatte ich seit damals glatt vergessen face-sad [/Edit] ...
Als Ergänzung zu Deinem Link oben: Abfragen und Aktualisieren der Meta-Informationen einer PDF-Datei

Grüße
bastla
60730
60730 30.08.2011 um 17:24:11 Uhr
Goto Top
Servus Bastla

Zitat von @bastla:
@t-mo
Danke für das DSO-Beispiel face-smile - kannte ich auch noch nicht ...

  • jetzt - wo du es so schreibst ... Ich editiere das fehlende Info beim Dim noch dazu - ist mir weder beim schreiben noch beim Testen aufgefallen...

Grüße
99045
99045 30.08.2011 um 17:47:26 Uhr
Goto Top
Zitat von @rubberman:
Zum Schreiben / Ändern ist mir keine scriptbare Methode bekannt.

Keine? Auch nicht AutoIt? face-devilish
Mit Rechtsklick auf die Datei > Eigenschaften > Dateiinfo
lassen sich auch alle Einträge bearbeiten. face-wink
rubberman
rubberman 30.08.2011 um 17:59:09 Uhr
Goto Top
Hallo Kaputtnick.

Ich hatte von "Bordmitteln" gesprochen. Da liegt T-MO's Variante noch am nächsten, obwohl auch dabei eine Erweiterung des ActiveX nötig ist.
Und ...
... die Eigenschaften per Hand zu ändern, hat nun so garnichts mit einer automatisierten Abhandlung des Problems zu tun.

Grüße
rubberman
ovu-p86
ovu-p86 30.08.2011 um 18:02:18 Uhr
Goto Top
Hallo Valume91,

mit BeCyPDFMetaEdit kannst du das realisieren. Da das Tool sowohl mit GUI-Oberfläche wie auch als
Kommandozeilentool funktioniert, kannst du per Batch die Metadaten ändern.

BeCyPDFMetaEdit

(Kl. Tipp: Das Programm muß zwar installiert werden, funktioniert aber auch portable wenn man den Programmordner
anschließend an eine beliebige Stelle kopiert/verschiebt. Habs damals erst installiert, den Programmordner
kopiert und dann wieder deinstalliert. Ich liebe portable Programme)


Gruß
Uwe


edit
ich weiß, sind keine Bordmittel. Aber da das Programm portable funktioniert doch fast
99045
99045 30.08.2011 um 18:09:00 Uhr
Goto Top
Hallo, rubberman,

Ich hatte von "Bordmitteln" gesprochen.
Stimmt, im Satz davor, "keine scriptbare Methode" ist ein neuer Satz, den man auch für sich getrennt und unabhängig vom vorhergehenden betrachten kann und darf.

... die Eigenschaften per Hand zu ändern, hat nun so garnichts mit einer automatisierten Abhandlung des Problems zu tun.
Mit AutoIt ändert man nichts per Hand, sondern erstellt ein Script, dass die ganze Aktion für einen durchführt. Für mich ist das eine scriptbare Methode.
Du denkst doch sonst auch immer um 26 Ecken, um etwas fertigzustellen?

Gruß
99045
99045 30.08.2011, aktualisiert am 18.10.2012 um 18:48:07 Uhr
Goto Top
Zitat von @bastla:
hatte ich seit damals glatt vergessen.

So fängt's manchmal an: Dementia praecox face-smile face-smile
rubberman
rubberman 30.08.2011 um 18:30:33 Uhr
Goto Top
Hallo Kaputtnick,

das geht ähnlich auch mit VBScript und SendKeys. Aber sorry, das sind Krücken die ich nicht ernsthaft in Betracht ziehen würde face-sad Ist mit Sicherheit von der Windowsversion abhängig, wieviele Tabs und Pfeiltastenanschläge man simulieren müsste, um dort zu landen wo man es braucht. Und wenn das Fenster zwischendrin den Focus verliert ist Schluss mit lustig...

Grüße
rubberman
bastla
bastla 30.08.2011 um 20:22:24 Uhr
Goto Top
Hallo @all!

Um das Ganze vielleicht einem Ende näher zu bringen: Unabhängig vom letztlich verwendeten Werkzeug könnte die Schleife drumherum etwa so aussehen:
pushd "D:\Ordner mit den vielen PDF"  
for /f "delims=" %%i in ('dir /b *_*_*.pdf') do for %%a in (%%~ni) do echo "%%a"|findstr "_">nul && echo %%a ^<-- "%%i"  
popd
Grüße
bastla
ovu-p86
ovu-p86 30.08.2011 um 23:50:30 Uhr
Goto Top
Hallo,

hier Bastlas CMD mit dem Werkzeug "BeCyPDFMetaEdit"

set progr=lfw:\dein ProgrPfad\BeCyPDFMetaEdit
pushd "D:\Ordner mit den vielen PDF"   
for /f "delims=" %%i in ('dir /b *_*_*.pdf') do for %%a in (%%~ni) do echo "%%a"|findstr "_">nul && echo %%a ^<-- "%%i" && "%progr%" "%%i" -T "%%a" -q  
popd

getestet, funktioniert


@bastla
dein CMD funktioniert natürlich wieder perfekt.
Brauche Hilfe um zu verstehen was in deinem CMD abgeht. Insbesondere der Part "echo %%a ^<-- "%%i". Was ist das?
Danke

Gruß
Uwe
bastla
bastla 31.08.2011 um 00:10:20 Uhr
Goto Top
Hallo ovu-p86!
"echo %%a ^<-- "%%i". Was ist das?
Reine Effekthascherei face-wink - damit wird nur eine Demo-Ausgabe der Art
3_29_0005 <-- "328644 3_29_0005 A.pdf"
erzeugt - ursprünglich wollte ich das umgekehrt ausgeben (also "328644 3_29_0005 A.pdf" --> 3_29_0005), aber da der zweite Teil immer gleich lang ist, schien mir die andere Reihenfolge übersichtlicher ...

Kurz zum Ablauf (anhand des angeführten Beispiels):
Die erste Schleife liefert alle passenden ("*_*_*.pdf") Dateinamen als %%i (also "328644 3_29_0005 A.pdf")
Vom Namen (%%~ni = "328644 3_29_0005 A") wird nur der Teil mit den "_" benötigt -
dazu wird anhand der enthaltenen Leerzeichen zerlegt (for /f geht nicht, weil die Anzahl der Tokens unterschiedlich sein kann) - als %%a kommen daher nacheinander
328644
3_29_0005
A
an.
Mit findstr "_" wird für jedes %%a geprüft, ob der richtige Teil dran ist (die Ausgabe interessiert dabei gar nicht und wird nach nul geschickt).
Nur, wenn "_" gefunden wurde, wird der Teil nach && (steht für "Voriger Befehl lieferte Errorlevel 0") ausgeführt.

Grüße
baatla
ovu-p86
ovu-p86 31.08.2011 um 00:55:47 Uhr
Goto Top
Hallo Bastla,

danke für die verständliche Erklärung.

Hatte auch schon überlegt wie man das realisieren kann wenn mal nichts, mal vor, mal hinter, mal sowohl
vor wie auch hinter dem zu extrahierenden Wert steht. Eine bestechend einfache Lösung.

Danke


Gruß
Uwe
Valume91
Valume91 13.09.2011 um 11:18:10 Uhr
Goto Top
Hallo miteinander

Danke für die Zahlreichen Antworten.
Ich habs mit dem von ovu-p86 vorgeschlagenen Tool BeCyPDFMetaEdit und der entsprechenden
Schleife von Bastla gelöst.
Hat perfekt funktioniert! Danke! =)

mfg Valume
moonman-25
moonman-25 20.08.2014 aktualisiert um 18:40:52 Uhr
Goto Top
Hallo Bastla,

könntest Du mir eventuell auch helfen?
Habe ein Verzeichnis mit mehreren Unterverzeichnissen, darin die PDF Dateien verteilt.
Script sollte alle Verzeichnisse durchsuchen, die Metadaten aus allen PDF Dateien entfernen und als Titel den Dateinamen übernehmen.
Habe schon einige Versuche hinter mir - ohne Erfolg face-sad
Benutze auch das BeCyPDFMetaEdit.
bastla
bastla 21.08.2014 um 18:00:46 Uhr
Goto Top
Hallo moonman-25 und willkommen im Forum!

Wie Du für Deinen Zweck "BeCyPDFMetaEdit" aufrufen und welche Parameter Du ggf übergeben musst, solltest Du selbst herausfinden können (ich selbst verwende das Tool nicht) - um alle *.pdf-Dateien zu erhalten, solte aber folgende Schleife genügen:
for /f "delims=" %%i in ('dir /s/b/a-d "D:\Dein Verzeichnis\*.pdf') do echo Gefunden: "%%~nxi" in "%%~dpi" (gesamter Pfad: "%%~fi")
Anstelle der Demo-Ausgabe mit "echo" müsstest Du den "BeCyPDFMetaEdit"-Aufruf setzen ...

Grüße
bastla
moonman-25
moonman-25 21.08.2014 um 18:18:23 Uhr
Goto Top
Also ich bin schon so weit, dass das Programm alle Dateien von den Metadaten säubert, inkl. aller Dateien in den Unterordnern. Statt aber den Titel aus dem Dateinamen zu übernehmen, steht dann da bei mir immer $FileTitle$ als Titel.

Mein Script seht folgendermaßen aus:

C:\Users\Pfad\BeCyPDFMetaEdit.exe "C:\Users\Pfad\BeCyPDFMetaEdit-2.37.0-de\*.pdf" -s -S -A -K -R -P -C -M -X 1 -T $FileTitle$ -d 2

Mit deiner Schleife oben kann ich überhaupt nichts anfangen. Trotzdem Danke
Wenn Du noch einen Tipp hast, wäre ich Dir sehr dankbar.
moonman-25
moonman-25 22.08.2014 um 08:39:48 Uhr
Goto Top
Sonst jemand eine Idee für mich?
moonman-25
moonman-25 22.08.2014 um 14:07:10 Uhr
Goto Top
So, ich hab's face-smile

Falls es noch jemand brauchen sollte:

for /R %%I in (*.pdf) do lw:\pfad\BeCyPDFMetaEdit.exe "%%I" -T "%%~nI" -S -A -K -R -P -C -M -X 1 -d 2

Die PDF Dateien müssen sich in demselben Ordner befinden, wo es ausgeführt wird, können auch in verschiedenen Unterordnern darin liegen.
bastla
bastla 22.08.2014 um 16:32:25 Uhr
Goto Top
Hallo moonman-25!
Die PDF Dateien müssen sich in demselben Ordner befinden, wo es ausgeführt wird
Das lässt sich ändern, indem entweder die Schleife aus meinem Ansatz von oben verwendet oder Deine Version auf
for /R "D:\Dein Verzeichnis" %%I in (*.pdf) do lw:\pfad\BeCyPDFMetaEdit.exe "%%I" -T "%%~nI" -S -A -K -R -P -C -M -X 1 -d 2
ergänzt wird ...

Grüße
bastla