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

Ordner überwachen und Tabelle mit Ergebnis anlegen (PDF-Dateien)

Frage Entwicklung Batch & Shell

Mitglied: baerbel99

baerbel99 (Level 1) - Jetzt verbinden

06.11.2011 um 07:14 Uhr, 3918 Aufrufe, 5 Kommentare

Hallo liebes Forum,

ich habe folgendes Problem zu lösen:

Wir speichern automatisiert PDF-Dateien in einem Verzeichenis (D:/Druck). Ich hätte gerne eine Übersicht in einer Tabelle (gerne xls oder csv), die enthält:

Dateiname, Erstellzeitpunkt (Datum und Uhrzeit) und die Seitenanzahl des Dokuments

Dieser Vorgang soll einmal täglich per Task erfolgen.

Wer kann mir helfen? Lieben Dank und Viele Grüße
Mitglied: 60730
06.11.2011 um 10:16 Uhr
moin,

normalerweise müßte jetzt die Nummer vom Ross und Reiter kommen, aber seis drum...

  • schau dir mal die Hilfe von For an for /?
Da wirst du z.B %~tI - Erzeugt Datum und Zeit von %I. lesen.

  • Jetzt schaust du dir auch mal dir /? genau an

Und das bedeutet z.B
for /f %a in ('dir *.pdf /B /A-D /TC') do echo %a;%~ta

  • Wie du das nun zu einer Batch zusammenbauen kannst - versuch mal alleine.
PS: Seitenzahlen einer PDF Datei bekommst du nur mit 3rd party Werkzeugen raus.
PDFTK sei dir da nahegelegt.

Gruß
Bitte warten ..
Mitglied: bastla
06.11.2011 um 10:41 Uhr
@T-Mo
dir /B
wird eher wenig Freude machen - es wird ja trotzdem nur der Dateiname geliefert, und die ausgelesene Zeit ist der "Geändert"-Timestamp ...

... daher eher so:
for /f "tokens=1-2" %%a in ('dir /tc Datei.pdf|findstr /i /e /c:"Datei.pdf"') do set "DateCreated=%%a" & set "TimeCreated=%%b"
Grüße
bastla

P.S.: Und weil der Link zu den Downloads etwas ungewöhnlich benannt ist: Download pdftk
Bitte warten ..
Mitglied: bastla
06.11.2011 um 11:16 Uhr
... obwohl: Die PDF-Datei sollte ja in den Metadaten einen eigenen Erstellungs-Timestamp enthalten - dann wird's aber etwas kniffliger, daher gleich ein kompletter (kaum getesteter ) Ansatz:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Druck" 
03.
set "Liste=D:\PDF-Liste_%date:~-4%-%date:~-7,2%-%date:~-10,2%.txt" 
04.
set "Trenn=;" 
05.
::Pfad zur installierten "pdftk.exe" 
06.
set "pdftk=C:\Utils\pdftk.exe" 
07.
set "Data=%temp%\PDF-Data.txt" 
08.
 
09.
del "%Liste%" 2>nul 
10.
for %%i in ("%Ordner%\*.pdf") do call :ProcessFile "%%i" 
11.
del "%Data%" 
12.
goto :eof 
13.
 
14.
:ProcessFile 
15.
:: Metadaten auslesen und zwischenspeichern 
16.
%pdftk% %1 dump_data>"%Data%" 
17.
:: Seitenanzahl auslesen 
18.
for /f "tokens=2" %%a in ('findstr "NumberOfPages:" "%Data%"') do set "Seiten=%%a" 
19.
 
20.
set "ZeilenNr=" & set "Zeile=" & set "Erstellt=nicht gefunden" 
21.
:: ZeilenNr für "CreationDate" suchen - Datum sollte in der nächsten Zeile stehen 
22.
for /f "delims=:" %%a in ('findstr /n /c:"InfoKey: CreationDate" "%Data%"') do set "ZeilenNr=%%a" 
23.
:: Wenn Zeile gefunden, nächste Zeile auslesen 
24.
if defined ZeilenNr for /f "delims=" %%a in ('more +%ZeilenNr% "%Data%"') do if not defined Zeile set "Zeile=%%a" 
25.
:: Wenn nächste Zeile mit "InfoValue: D:" beginnt, Timestamp auslesen 
26.
for /f "tokens=3 delims=:" %%a in ('echo %Zeile%^|findstr /b /c:"InfoValue: D:"') do set "Erstellt=%%a" 
27.
:: Ausgabe 
28.
>>"%Liste%" echo %~nx1%Trenn%%Erstellt%%Trenn%%Seiten% 
29.
goto :eof
Das Ausgabeformat des Erstellungszeitpunktes ließe sich bei Bedarf natürlich noch anpassen ...

Grüße
bastla
Bitte warten ..
Mitglied: baerbel99
06.11.2011 um 15:50 Uhr
Vielen Dank an alle

@bastla: Genial - Einfach klasse
Leider verstehe ich nur etwas von php, da könnte ich den timestamp anpassen.
Wie erfolgt es hier? Mein Wunschformat wäre: DD.MM.YYYY, HH:MM:SS

Wenn möglich, dann würde ich gerne doch eine Liste pro Monat führen (so ist die Summierung einfacher).

Die erforderliche Anpassung wäre:

set "Liste=D:\druck\PDF-Liste_%date:~-4%-%date:~-7,2%"

---
Aber: Wie bekomme ich es hin, dass die Batch am nächsten Tag nur anhängt, also die Datei fortschreibt, nicht aber die Datei überschreibt?
Eigentlich sollte es ja durch die
01.
 >> 
funktionieren - Tut es aber leider nicht.

EDIT:
Das habe ich nun gelöst: Die Zeile
01.
del "%Liste%" 2>nul
habe ich entfernt

---



Viele Grüße,
Bitte warten ..
Mitglied: bastla
06.11.2011 um 16:36 Uhr
Hallo baerbel99!
Mein Wunschformat wäre: DD.MM.YYYY, HH:MM:SS
Sollte so gehen (vor Zeile 28 einfügen):
set "Erstellt=%Erstellt:~6,2%.%Erstellt:~4,2%.%Erstellt:~0,4%, %Erstellt:~8,2%:%Erstellt:~10,2%:%Erstellt:~12,2%"
Wie bekomme ich es hin, dass die Batch am nächsten Tag nur anhängt, also die Datei fortschreibt, nicht aber die Datei überschreibt?
Indem Du Zeile 9 entfernst / auskommentierst ...

Wenn Du dann auch noch doppelte Einträge vermeiden wolltest, könntest Du Zeile 28 durch
01.
set "Eintrag=%~nx1%Trenn%%Erstellt%%Trenn%%Seiten%" 
02.
findstr /x /c:"%Eintrag%" "%Liste%">nul 2>nul||>>"%Liste%" echo %Eintrag%
ersetzen ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Mehrere PDF-Dateien per Batch zusammenfügen (1)

Frage von Grimmli zum Thema Batch & Shell ...

Drucker und Scanner
Problem mit Ausdruck von PDF Dateien (4)

Frage von CountryBoy zum Thema Drucker und Scanner ...

Viren und Trojaner
gelöst "Gefährlichkeit" von PDF-Dateien (8)

Frage von thaefliger zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...