BATCH: Information aus CSV Datei holen und für Umbenennung einer Datei nutzen
Liebe Batch Profis,
ich bin damit konfrontiert aus einer CSV Datei einen Wert zu holen und mit diesem Wert die Datei (dieselbe Datei) umzubenennen. Ich habe wirklich keine Ahnung wie man das angehen könnte – es sollte wenn irgendwie möglich mit einem normalen Script (.cmd Datei) funktionieren.
Als Beispiel …
CSV Datei mit Namen „Final_Ergebnis_MAN17.csv“ schaut so aus:
Buchungskreis;Budgetjahr;Stichtag;Stelle LFD;Stellennummer;Unterabschnitt;Kurztext
1002;2014;20140313 ;00001952;00001952;010000;AL
Ich möchte den Buchungskreis (=1002) auslesen und dann den Namen des Files ändern in:
„DPP1002_yyyymmdd.csv“
Das Datum ist mir klar – aber wie ich den Wert = 1002 bekomme leider nicht.
Gibt es Vorschläge, Ideen?
LG
Lakslo
PS: Die nächste Herausforderung wird dann noch das ganze in einer "for /f" Schleife für X Dateien zu implementieren ...
ich bin damit konfrontiert aus einer CSV Datei einen Wert zu holen und mit diesem Wert die Datei (dieselbe Datei) umzubenennen. Ich habe wirklich keine Ahnung wie man das angehen könnte – es sollte wenn irgendwie möglich mit einem normalen Script (.cmd Datei) funktionieren.
Als Beispiel …
CSV Datei mit Namen „Final_Ergebnis_MAN17.csv“ schaut so aus:
Buchungskreis;Budgetjahr;Stichtag;Stelle LFD;Stellennummer;Unterabschnitt;Kurztext
1002;2014;20140313 ;00001952;00001952;010000;AL
Ich möchte den Buchungskreis (=1002) auslesen und dann den Namen des Files ändern in:
„DPP1002_yyyymmdd.csv“
Das Datum ist mir klar – aber wie ich den Wert = 1002 bekomme leider nicht.
Gibt es Vorschläge, Ideen?
LG
Lakslo
PS: Die nächste Herausforderung wird dann noch das ganze in einer "for /f" Schleife für X Dateien zu implementieren ...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 232494
Url: https://administrator.de/forum/batch-information-aus-csv-datei-holen-und-fuer-umbenennung-einer-datei-nutzen-232494.html
Ausgedruckt am: 09.04.2025 um 10:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo Lakslo!
Unter der Annahme, dass der gesuchte Buchungskreis immer am Beginn der 2. Zeile steht und die Dateien nach dem Schema "Final_Ergebnis_*.csv" benannt sind, könnte das etwa so gehen:
Wegen des
Grüße
bastla
Unter der Annahme, dass der gesuchte Buchungskreis immer am Beginn der 2. Zeile steht und die Dateien nach dem Schema "Final_Ergebnis_*.csv" benannt sind, könnte das etwa so gehen:
@echo off & setlocal
set "Ordner=D:\Ordner mit den csv-Dateien"
set "Datei=Final_Ergebnis_*.csv"
pushd "%Ordner%"
for /f "delims=" %%i in ('dir /b "%Datei%"') do call :ProcessFile "%%i"
pause
goto :eof
:ProcessFile
set "BK="
for /f "usebackq skip=1 tokens=1 delims=;" %%a in (%1) do if not defined BK set "BK=%%a"
if not defined BK (
echo Buchungskreis in %1 nicht gefunden!
pause
goto :eof
)
echo ren %1 "DPP%BK%_%date:~-4%%date:~-7,2%%date:~-10,2%.csv"
goto :eof
echo
vor dem ren
wird das Umbenennen zunächst nur durch Ausgabe des jeweilgen Befehls simuliert - wenn Du das echo
(und die dann überflüssige Zeile 7) weg lässt, werden die Namen tatsächlich (und kommentarlos) geändert.Grüße
bastla
Hallo Lakslo!
Wenn Du das Datum aus Feld 3 der CSV-Datei meinst etwa so:
Grüße
bastla
P.S.: Verwende für das Posten von Code bitte das passende Format - geht auch nachträglich noch ...
Wenn Du das Datum aus Feld 3 der CSV-Datei meinst etwa so:
@echo off & setlocal
set "Ordner=D:\Ordner mit den csv-Dateien"
set "Datei=Final_Ergebnis_*.csv"
pushd "%Ordner%"
for /f "delims=" %%i in ('dir /b "%Datei%"') do call :ProcessFile "%%i"
pause
goto :eof
:ProcessFile
set "BK=" & set "Datum="
for /f "usebackq skip=1 tokens=1,3 delims=;" %%a in (%1) do if not defined BK (set "BK=%%a" & set "Datum=%%b")
if not defined BK (
echo Buchungskreis in %1 nicht gefunden!
pause
goto :eof
)
if not defined Datum (
echo Datum in %1 nicht gefunden!
pause
goto :eof
)
echo ren %1 "DPP%BK%_%Datum%.csv"
goto :eof
bastla
P.S.: Verwende für das Posten von Code bitte das passende Format - geht auch nachträglich noch ...