Auslesen einer (Teil)-Zeile, Inhalt zum Dateinamen machen und speichern
Hallo und guten Tag, werte Mitstreiter,
als Neuling hoffe ich das richtige Forum gefunden zu haben.
Hier die Beschreibung meines Problems:
Durch ein Anwenderprogramm erhalte ich aufgeteilte Listen einer Abrechnung, die ich aber nicht weiter beeinflussen kann.
Insbesonders störend wirkt sich hierbei die absolut feste Länge (15 Zeichen !!!) des Dateinamens aus.
In der jeweiligen Datei (es handelt sich um ca. 250 Dateien), die im gleichen Verzeichnis liegen, steht an der gleichen Stelle,
nämlich Zeile 3 Position 1 bis 44 der Name, den ich als Bezeichnung benötige, um zu erkennen, wer diese Liste erhält.
Diese Zeile 3 möchte ich auslesen und die jeweilige Datei dann mit diesem Namen abspeichern.
Die Aktion sollte also so ablaufen, dass entweder alle Dateien oder einzeln nacheinander geöffnet werden, die o.g. Zeile ausgelesen,
die aktuelle Datei unter diesem ausgelesenen Namen gespeichert wird, und dann so weiter bis alle Dateien erledigt sind.
Gibt es für ein solches Problem eine Möglichkeit zur Lösung in ultraEdit ?
Vielen Dank, werde jeden Tipp ausprobieren und berichten
friedhelm
.
als Neuling hoffe ich das richtige Forum gefunden zu haben.
Hier die Beschreibung meines Problems:
Durch ein Anwenderprogramm erhalte ich aufgeteilte Listen einer Abrechnung, die ich aber nicht weiter beeinflussen kann.
Insbesonders störend wirkt sich hierbei die absolut feste Länge (15 Zeichen !!!) des Dateinamens aus.
In der jeweiligen Datei (es handelt sich um ca. 250 Dateien), die im gleichen Verzeichnis liegen, steht an der gleichen Stelle,
nämlich Zeile 3 Position 1 bis 44 der Name, den ich als Bezeichnung benötige, um zu erkennen, wer diese Liste erhält.
Diese Zeile 3 möchte ich auslesen und die jeweilige Datei dann mit diesem Namen abspeichern.
Die Aktion sollte also so ablaufen, dass entweder alle Dateien oder einzeln nacheinander geöffnet werden, die o.g. Zeile ausgelesen,
die aktuelle Datei unter diesem ausgelesenen Namen gespeichert wird, und dann so weiter bis alle Dateien erledigt sind.
Gibt es für ein solches Problem eine Möglichkeit zur Lösung in ultraEdit ?
Vielen Dank, werde jeden Tipp ausprobieren und berichten
friedhelm
.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179758
Url: https://administrator.de/forum/auslesen-einer-teil-zeile-inhalt-zum-dateinamen-machen-und-speichern-179758.html
Ausgedruckt am: 19.05.2025 um 12:05 Uhr
8 Kommentare
Neuester Kommentar
Hallo derfriedhelm und willkommen im völlig richtigen Forum
!
Das sollte sich per Batch lösen lassen - etwa:
Solange am Anfnag der Zeile 13 das
Es werden übrigens alle Dateien (außer es gäbe einen gleich bleibenden Namensbestandteil, mit dem eine Einschränkung vorgenommen werden könnte - dann zB
schreiben) verarbeitet - daher bitte die Batchdatei nicht im selben Ordner platzieren ...
Grüße
bastla
[Edit] Zeile 11 angepasst, damit die Batchdatei selbst bei der Verarbeitung übersprungen wird; Zeilen 2, 4 und 6 auskommentiert [/Edit]
Das sollte sich per Batch lösen lassen - etwa:
@echo off & setlocal
::set "Ordner=D:\Ordner mit 250 Dateien"
::pushd "%Ordner%"
for /f "delims=" %%i in ('dir /b/a-d') do call :ProcessFile "%%i"
::popd
pause
goto :eof
:ProcessFile
if /i "%~nx0"=="%~nx1" goto :eof
set "Zeile3="
for /f "usebackq skip=2 delims=" %%a in (%1) do if not defined Zeile3 set "Zeile3=%%a"
echo ren %1 "%Zeile3:~,44%"
goto :eof
echo
steht, werden die Dateien nicht wirklich umbenannt, sondern es wird nur der Befehl angezeigt - wenn's gut aussieht, einfach das echo
entfernen und Ernst machen ...Es werden übrigens alle Dateien (außer es gäbe einen gleich bleibenden Namensbestandteil, mit dem eine Einschränkung vorgenommen werden könnte - dann zB
for /f "delims=" %%i in ('dir /b/a-d bherzogenr*') do call :ProcessFile "%%i"
Grüße
bastla
[Edit] Zeile 11 angepasst, damit die Batchdatei selbst bei der Verarbeitung übersprungen wird; Zeilen 2, 4 und 6 auskommentiert [/Edit]
Hallo derfriedhelm!
Ich ändere mal die Batchdatei, so dass sie sich nicht selbst "verarbeitet" - dann sollte sie im selben Ordner wie die Dateien liegen, womit auch die Zeilen 2, 4 und 6 entbehrlich werden.
Zu den Dateinamen: Handelt es sich bei dem angesprochenen Doppelpunkt oder dem Leerzeichen jeweils um den/das erste/n in der Zeile?
Grüße
bastla
Der Teufel steckt im Detail
In der Tat - in diesem Fall in den Umlauten des Pfades ...Ich ändere mal die Batchdatei, so dass sie sich nicht selbst "verarbeitet" - dann sollte sie im selben Ordner wie die Dateien liegen, womit auch die Zeilen 2, 4 und 6 entbehrlich werden.
Zu den Dateinamen: Handelt es sich bei dem angesprochenen Doppelpunkt oder dem Leerzeichen jeweils um den/das erste/n in der Zeile?
Grüße
bastla
Hallo derfriedhelm!
Ich hatte gemeint, ob es vor dem besagten Doppelpunkt in der Zeile noch einen weiteren geben könnte - falls nein (und in allen Fällen das Zeichen unmittelbar vor dem Doppelpunkt weggelassen werden soll/kann), dann etwa so:
Grüße
bastla
Ich hatte gemeint, ob es vor dem besagten Doppelpunkt in der Zeile noch einen weiteren geben könnte - falls nein (und in allen Fällen das Zeichen unmittelbar vor dem Doppelpunkt weggelassen werden soll/kann), dann etwa so:
@echo off & setlocal
for /f "delims=" %%i in ('dir /b/a-d') do call :ProcessFile "%%i"
pause
goto :eof
:ProcessFile
if /i "%~nx0"=="%~nx1" goto :eof
set "Zeile3="
for /f "usebackq skip=2 delims=:" %%a in (%1) do if not defined Zeile3 set "Zeile3=%%a"
echo ren %1 "%Zeile3:~,~-1%"
goto :eof
bastla