Per Batch Datei umbennen und kopieren mit Angaben aus gleichnamiger CSV
Hallo,
ich habe ein Problem und weiß nicht so recht wie ich es per Batch lösen kann.
Eine Software erstellt mir eine PDF Datei mit folgenden Muster AA_12345678.pdf und dazu eine CSV AA_12345678.csv
In der CSV sind einige Spalten mit Angaben zum Inhalt der PDF.
Nun möchte ich anhand dieser Angaben die PDF umbennen und wegkopieren. Damit die PDF besser wieder auffindbar ist und in der richtigen Abteilung bearbeitet wird.
Aufbau der CSV:
Spalte 1 - 5 sind egal
Spalte 6 und 7 soll an den PDF Dateinamen angehangt werden
Spalte 8 - 14 sind auch egal
Spalte 19 soll als Unterordner sein
Anmerkung: In der CSV sind die Spalten mit einen ; getrennt und der Text steht selber auch in Anführungszeichen "
Speicherpfad der PDF: c:\Dokumente\Spalte 19\AA_12345678_Spalte 6,Spalte7.pdf
Im Anschluss soll die Ursprungs PDF und CSV gelöscht werden.
Das Script würde ich dann per Aufgabenplaner jede Minute druchlaufen lassen. Da im Schnitt jede Minute eine PDF und CSV erstellt wird.
Hoffe das mir jemand helfen kann.
ich habe ein Problem und weiß nicht so recht wie ich es per Batch lösen kann.
Eine Software erstellt mir eine PDF Datei mit folgenden Muster AA_12345678.pdf und dazu eine CSV AA_12345678.csv
In der CSV sind einige Spalten mit Angaben zum Inhalt der PDF.
Nun möchte ich anhand dieser Angaben die PDF umbennen und wegkopieren. Damit die PDF besser wieder auffindbar ist und in der richtigen Abteilung bearbeitet wird.
Aufbau der CSV:
Spalte 1 - 5 sind egal
Spalte 6 und 7 soll an den PDF Dateinamen angehangt werden
Spalte 8 - 14 sind auch egal
Spalte 19 soll als Unterordner sein
Anmerkung: In der CSV sind die Spalten mit einen ; getrennt und der Text steht selber auch in Anführungszeichen "
Speicherpfad der PDF: c:\Dokumente\Spalte 19\AA_12345678_Spalte 6,Spalte7.pdf
Im Anschluss soll die Ursprungs PDF und CSV gelöscht werden.
Das Script würde ich dann per Aufgabenplaner jede Minute druchlaufen lassen. Da im Schnitt jede Minute eine PDF und CSV erstellt wird.
Hoffe das mir jemand helfen kann.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 352523
Url: https://administrator.de/forum/per-batch-datei-umbennen-und-kopieren-mit-angaben-aus-gleichnamiger-csv-352523.html
Ausgedruckt am: 04.05.2025 um 08:05 Uhr
7 Kommentare
Neuester Kommentar
Bisschen genauer bitte. Sind die Daten direkt in der ersten Zeile zu finden, oder gibt es eine Kopfzeile? Gibt es leere Datenfelder (aufeinanderfolgende Semikolons ohne Inhalt dazwischen)?
Steffen
Probiers mal so:
Steffen
@echo off &setlocal
REM Weil das Arbeitsverzeichnis bei einem geplanten Task ggf. System32 ist ...
cd /d "%~dp0"
for /f "delims=" %%i in ('dir /b /a-d *.csv') do if exist "%%~ni.pdf" (
REM prüfe wie lange es dauern kann, bis die beiden Dateien vollständig geschrieben wurden und passe ggf. an:
>nul timeout /t 5 /nobreak
for /f "usebackq tokens=6,7,19 delims=;" %%j in ("%%~i") do (
if not exist "C:\Dokumente\%%~l\" md "C:\Dokumente\%%~l"
>nul move "%%~ni.pdf" "C:\Dokumente\%%~l\%%~ni_%%~j_%%~k.pdf"
del /f "%%~i"
)
)
Nicht so trivial in Batch (in Powershell vermutlich einfacher). Um Clashes mit Ausrufezeichen zu vermeiden musst du (bei ausgeschalteter verzögerter Variablenerweiterung) alle FOR-Variablenwerte normalen Umgebungsvariablen zuweisen, dann die verzögerte Erweiterung einschalten, mit den in Ausrufezeichen eingefassten Umgebungsvariablen arbeiten (!var:~0,10! für die ersten 10 Zeichen von Variable var) und anschließend die verzögerte Erweiterung wieder ausknipsen. Das in einer unleserlichen Zeile abzufackeln, ist etwas suboptimal.
Steffen
Steffen