1 PDF duplizieren und umbenennen nach CSV mittels Batch
Hallo,
ich hoffe ihr könnt mir bei folgendem Problem helfen:
Ich habe eine CSV-Datei mit endlich vielen Einträgen (variiert zwischen 10 - 200, getrennt mit Semikolon). In dieser CSV stehen in Spalte 5 Dateinamen z.B. "123456-Test.pdf".
Ausgangslage
Zusätzlich habe ich noch eine PDF "beispiel.pdf". Diese soll so oft dupliziert und mit dem Namen aus Spalte 5 der CSV benannt werden, wie Zeilen in der CSV sind.
Kann man so etwas in Batch programmieren?
Pseudo-Code
Ich kann ein bisschen Java, daher sieht der Code Java ähnlicher Herausgekommen ist folgender Batch-Java-Pseudo-Code:
Meine Probleme
Danke für eure Hilfe.
Viele Grüße
Kalisser
ich hoffe ihr könnt mir bei folgendem Problem helfen:
Ich habe eine CSV-Datei mit endlich vielen Einträgen (variiert zwischen 10 - 200, getrennt mit Semikolon). In dieser CSV stehen in Spalte 5 Dateinamen z.B. "123456-Test.pdf".
Ausgangslage
A | B | C | D | E |
---|---|---|---|---|
beispiel.pdf | 123456 | Text | Text | 123465-Test.pdf |
beispiel.pdf | 222222 | Text | Text | 222222-Test.pdf |
beispiel.pdf | 445566 | Text | Text | 445566-Test.pdf |
Zusätzlich habe ich noch eine PDF "beispiel.pdf". Diese soll so oft dupliziert und mit dem Namen aus Spalte 5 der CSV benannt werden, wie Zeilen in der CSV sind.
Kann man so etwas in Batch programmieren?
Pseudo-Code
Ich kann ein bisschen Java, daher sieht der Code Java ähnlicher Herausgekommen ist folgender Batch-Java-Pseudo-Code:
for (int i = 0; i <= AnzahlAusstehendeZeilenInCSV ; i++)
{
kopierePDF();
BenennePDF();
naechsteZeileInCSV();
}
void kopierePDF()
{
xcopy C:\PDF\beispiel.pdf C:\PDF\kopiertesBeispiel.pdf
}
void BenennePDF()
{
ren "kopiertesBeispiel" "Name von Zeile1, Spalte5 der CSV"
}
void naechsteZeileInCSV()
{
zeile = zeile +1
}
Meine Probleme
- Wie bekomme ich die Anzahl der Zeilen der CSV heraus und gehe dann in die nächste. Überlegt habe ich auch schon, dass der Benutzer einfach die Anzahl der Zellen übergibt (Ist ja nicht schwer bei Excel links an den Rand zu gucken ).
- Das Kopieren sollte eigentlich klappen.
- Zum Benennen fand ich folgenden Eintrag ganz interessant: CSV Datei auslesen per Batch. Leider habe ich es nicht hinbekommen diesen Code auf mein Beispiel zu übertragen.
Danke für eure Hilfe.
Viele Grüße
Kalisser
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 308102
Url: https://administrator.de/contentid/308102
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
5 Kommentare
Neuester Kommentar
Moin,
ich würde es mit VBS machen.
Zunächst die csv Zeilenweise auslesen:
VBS - Zeilen aus Textdatei auslesen (regelm. Reihenfolge)
Speziell der Beitrag von TsukiSan
anschließend nimmst du jede Zeile, trennst die mit der Split-Funktion auf und erhälst ein Array, mit dem Wert jeder einzelnen Zeile. Wenn du dann den entsprechenden Wert hast, verwendest du diesen um deine PDF zu kopieren und umzubenennen.
Insgesamt sicherlich "relativ" aufwendig, aber vbs ist vermutlich leichter nachvollziehbarer (zumindest für mich) als ein Batch-Skript. Wobei das vermutlich daran liegt, dass ich mich mit Batch noch nie intensiv beschäftigt habe...
Gruß
em-pie
ich würde es mit VBS machen.
Zunächst die csv Zeilenweise auslesen:
VBS - Zeilen aus Textdatei auslesen (regelm. Reihenfolge)
Speziell der Beitrag von TsukiSan
anschließend nimmst du jede Zeile, trennst die mit der Split-Funktion auf und erhälst ein Array, mit dem Wert jeder einzelnen Zeile. Wenn du dann den entsprechenden Wert hast, verwendest du diesen um deine PDF zu kopieren und umzubenennen.
Insgesamt sicherlich "relativ" aufwendig, aber vbs ist vermutlich leichter nachvollziehbarer (zumindest für mich) als ein Batch-Skript. Wobei das vermutlich daran liegt, dass ich mich mit Batch noch nie intensiv beschäftigt habe...
Gruß
em-pie
Hallo Kalisser und willkommen im Forum!
Dazu sollte ein Batch-Code etwa folgender Art genügen:
Bitte die Zeilen 2 bis 4 anpassen und den Zielpfad in Zeile 3 ohne abschließenden "\" schreiben ...
Grüße
bastla
Dazu sollte ein Batch-Code etwa folgender Art genügen:
@echo off & setlocal
set "Quelle=D:\Dein Beispiel.pdf"
set "Ziel=D:\Dein Zielordner"
set "CSV=D:\Deine CSV.csv"
md "%Ziel%" 2>nul
for /f "usebackq tokens=5 delims=;" %%i in ("%CSV%") do copy "%Quelle%" "%Ziel%\%%i" >nul
Grüße
bastla