For f - In vielen Dateien Komma durch Punkt ersetzen
Hallo zusammen,
ich bräuchte ein wenig Hilfe bei der Erstellung einer Batch Datei. Sie soll in einem Ordner liegen und ausgeführt werden der mehrere Unterordner (Anzahl und Name variabel) enthält. In diesen Ordnern liegen jeweils mehrere Dateien mit der Endung *.dat (01.dat, 02.dat, 03. dat usw.). Sie lassen sich im normalen Editor öffnen und enthalten viele Zahlen mit Komma. In all diesen Zahlen in den Dateien soll das Komma durch einen Punkt ersetzt werden.
Bisher habe ich folgendes was auch recht gut funktioniert:
Dazu muss die Batch Datei jedoch jeweils erst in den jeweiligen Ordner geschoben werden und ich muss jeden Dateinamen vorher angeben. Außerdem muss dabei von der Batch Datei immer erst eine Backup der original Datei erstellt und wieder gelöscht werden. Das geht sicher noch eleganter, allerdings kann ich mich einfach nicht mit dem Befehl "For /F" anfreunden, irgendwie verstehe ich gar nicht wie ich diesen richtig in Kombination mit Variablen verwenden kann. Kann mir da jemand behilflich sein?
Über Hilfe würde ich mich sehr freuen. Vielen Dank schon mal!
ich bräuchte ein wenig Hilfe bei der Erstellung einer Batch Datei. Sie soll in einem Ordner liegen und ausgeführt werden der mehrere Unterordner (Anzahl und Name variabel) enthält. In diesen Ordnern liegen jeweils mehrere Dateien mit der Endung *.dat (01.dat, 02.dat, 03. dat usw.). Sie lassen sich im normalen Editor öffnen und enthalten viele Zahlen mit Komma. In all diesen Zahlen in den Dateien soll das Komma durch einen Punkt ersetzt werden.
Bisher habe ich folgendes was auch recht gut funktioniert:
echo Komma wird durch Punkt ersetzt...
@echo off
ren *.dat *.bak
setlocal enabledelayedexpansion
if exist 01.bak goto ren01
if exist 02.bak goto ren02
:ren01
for /f "delims==" %%A in (01.bak) do set string=%%A & echo !string:,=.! >> 01.dat
del 01.bak /q
:ren02
for /f "delims==" %%A in (02.bak) do set string=%%A & echo !string:,=.! >> 02.dat
del 02.bak /q
exit
Dazu muss die Batch Datei jedoch jeweils erst in den jeweiligen Ordner geschoben werden und ich muss jeden Dateinamen vorher angeben. Außerdem muss dabei von der Batch Datei immer erst eine Backup der original Datei erstellt und wieder gelöscht werden. Das geht sicher noch eleganter, allerdings kann ich mich einfach nicht mit dem Befehl "For /F" anfreunden, irgendwie verstehe ich gar nicht wie ich diesen richtig in Kombination mit Variablen verwenden kann. Kann mir da jemand behilflich sein?
Über Hilfe würde ich mich sehr freuen. Vielen Dank schon mal!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 312869
Url: https://administrator.de/forum/for-f-in-vielen-dateien-komma-durch-punkt-ersetzen-312869.html
Ausgedruckt am: 29.04.2025 um 22:04 Uhr
2 Kommentare
Neuester Kommentar

Hi
Regards
@echo off & setlocal enabledelayedexpansion
::folder where to process dat files (recursive search)
set "folder=C:\yourfolder"
:: process all dat files in folder ans subfolders
for /f "delims=" %%a in ('dir /b /s /a-d "%folder%\*.dat"') DO (
ren "%%a" "%%~na.bak"
>"%%a" (for /f "tokens=1,2* delims=:" %%b in ('findstr /n "^" "%%~dpna.bak"') DO (
set "string=%%c"
if "!string!" == "" (echo.) else (set "string=!string:,=.!" &echo !string!)
))
del "%%~dpna.bak"
)