Eine .txt vom Dateinamen unabhängig in .csv überführen
Hallo nochmals,
wie im anderen, zuvorigen Beitrag damals schon gepostet, funktioniert die Formatierung von *.txt zu *.csv mittels Batch prächtig. Der Befehl sieht momentan (nach den Verbesserungsvorschlägen von euch) wie folgt aus:
Nun würde ich allerdings gerne noch eine Kleinigkeit ändern. Ich würde den genauen Dateinamen gerne durch eine allgemeine Auswahl ersetzen - also quasi *.txt anstatt Messwerte2.txt und diesen Namen dann aber auch gerne für die Benennung der .csv Datei verwenden.
also quasi xuuhoha9039.txt wird zu xuuhoha9039.csv und das im Idealfall gleich mit allen Datein des aktuellen Ordners (in dem sich die batch befindet) nach dem Muster des vorhandenen (oberen) Befehls.
Danke und freundliche Grüße
Joachim
wie im anderen, zuvorigen Beitrag damals schon gepostet, funktioniert die Formatierung von *.txt zu *.csv mittels Batch prächtig. Der Befehl sieht momentan (nach den Verbesserungsvorschlägen von euch) wie folgt aus:
@echo off
set "Alt=%CD%\Messwerte2.txt"
set "Neu=%CD%\Messwerte2.csv"
if exist "%Neu%" del "%Neu%"
for /f "usebackq skip=1 tokens=2,4" %%i in ("%Alt%") do @echo %%i;%%j >>"%Neu%"
pause
Nun würde ich allerdings gerne noch eine Kleinigkeit ändern. Ich würde den genauen Dateinamen gerne durch eine allgemeine Auswahl ersetzen - also quasi *.txt anstatt Messwerte2.txt und diesen Namen dann aber auch gerne für die Benennung der .csv Datei verwenden.
also quasi xuuhoha9039.txt wird zu xuuhoha9039.csv und das im Idealfall gleich mit allen Datein des aktuellen Ordners (in dem sich die batch befindet) nach dem Muster des vorhandenen (oberen) Befehls.
Danke und freundliche Grüße
Joachim
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 130775
Url: https://administrator.de/forum/eine-txt-vom-dateinamen-unabhaengig-in-csv-ueberfuehren-130775.html
Ausgedruckt am: 23.04.2025 um 19:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo cherti!
Eigentlich müsstest Du nur ein Schleifchen drum rum wickeln - das geht (ungetestet) auch ohne explizite Zuweisung an die Variablen %Alt% und %Neu%:
Anstelle von "
Alternativ dazu ließe sich aber natürlich auch der ursprüngliche Batch als Unterprogramm verwenden:
Grüße
bastla
Eigentlich müsstest Du nur ein Schleifchen drum rum wickeln - das geht (ungetestet) auch ohne explizite Zuweisung an die Variablen %Alt% und %Neu%:
@echo off
for %%a in (*.txt) do (
if exist "%%~dpna.csv" del "%%~dpna.csv"
for /f "usebackq skip=1 tokens=2,4" %%i in ("%%a") do echo %%i;%%j >>"%%~dpna.csv"
)
pause
%%~dpna
" sollte in diesem Fall auch "%%~na" genügen, aber die vollständige Angabe mit drive und path kann ja nicht schaden (und hilft, falls zB einmal nicht nur "*.txt", sondern etwa "D:\Ein bestimmter Ordner\*.txt" verarbeitet werden sollte).Alternativ dazu ließe sich aber natürlich auch der ursprüngliche Batch als Unterprogramm verwenden:
@echo off & setlocal
for %%a in (*.txt) do call :ProcessFile "%%a"
goto :eof
:ProcessFile
set "Alt=%~1"
set "Neu=%~dpn1.csv"
if exist "%Neu%" del "%Neu%"
for /f "usebackq skip=1 tokens=2,4" %%i in ("%Alt%") do @echo %%i;%%j >>"%Neu%"
goto :eof
bastla