Batch - Dateiname aus Datei auslesen
Hallo,
hab einen Ordner in den täglich mehrere Dateien mit fortlaufender Nummer geschrieben werden.
Bei allen Dateien steht in der zweiten Zeile eine Kontonummer (10 stellig, mit führenden Nullen) mit #EUR angehängt; Beispiel: 0000123456#EUR.
Nun würde ich per Batch gerne die Datei umbenennen, so das die Kontonummer als Dateiname verwendet wird. Ob mit oder ohne dem #EUR ist mir eigentlich egal - schöner wäre zwar ohne - muss aber nicht sein.
Beispiel: aus STA0781.STA sollte 0000123456.STA oder 0000123456#EUR.STA werden.
Bei den Dateien handelt es sich um .STA Dateien - diese kann ich mit dem Editor jedoch problemlos öffnen und bearbeiten.
Hab zu dem Thema bereits einige Beiträge gefunden. Habs leider nicht geschafft eine der dort genannten Lösungen für meine Bedürfnisse umzubauen.
Danke an alle die Antworten!
hab einen Ordner in den täglich mehrere Dateien mit fortlaufender Nummer geschrieben werden.
Bei allen Dateien steht in der zweiten Zeile eine Kontonummer (10 stellig, mit führenden Nullen) mit #EUR angehängt; Beispiel: 0000123456#EUR.
Nun würde ich per Batch gerne die Datei umbenennen, so das die Kontonummer als Dateiname verwendet wird. Ob mit oder ohne dem #EUR ist mir eigentlich egal - schöner wäre zwar ohne - muss aber nicht sein.
Beispiel: aus STA0781.STA sollte 0000123456.STA oder 0000123456#EUR.STA werden.
Bei den Dateien handelt es sich um .STA Dateien - diese kann ich mit dem Editor jedoch problemlos öffnen und bearbeiten.
Hab zu dem Thema bereits einige Beiträge gefunden. Habs leider nicht geschafft eine der dort genannten Lösungen für meine Bedürfnisse umzubauen.
Danke an alle die Antworten!
Please also mark the comments that contributed to the solution of the article
Content-Key: 61742
Url: https://administrator.de/contentid/61742
Printed on: April 20, 2024 at 03:04 o'clock
4 Comments
Latest comment
Hallo dol123 und willkommen im Forum!
Versuch es mit folgender Batchdatei ("Umbenennen.bat"):
Beim Aufruf ist die umzubenennende Datei als Argument zu übergeben (auch per Drag and Drop aus dem Explorer möglich), also etwa
Falls eine Datei mit dem neuen Namen bereits existiert, wird nicht umbenannt. Was sollte in diesem Fall in einer Endfassung passieren?
Grüße
bastla
[Edit] Berücksichtigung von Pfaden ergänzt [/Edit]
Versuch es mit folgender Batchdatei ("Umbenennen.bat"):
@echo off & setlocal
set Nr=
for /f "delims=#" %%i in ('more +1 "%~1"') do if not defined Nr set Nr=%%i
if defined Nr if not exist "%~dp1%Nr%%~x1" ren "%~1" "%Nr%%~x1"
Umbenennen.bat STA0781.STA
Falls eine Datei mit dem neuen Namen bereits existiert, wird nicht umbenannt. Was sollte in diesem Fall in einer Endfassung passieren?
Grüße
bastla
[Edit] Berücksichtigung von Pfaden ergänzt [/Edit]
Hallo dol123!
Vielleicht so:
Grüße
bastla
Vielleicht so:
@echo off & setlocal
set "Ordner=D:\STADaten"
set "Typ=sta"
cd /d "%Ordner%"
for %%f in (*.%Typ%) do call :ProcessFile "%%f"
goto :eof
:ProcessFile
set Nr=
for /f "delims=#" %%i in ('more +1 "%~1"') do if not defined Nr set Nr=%%i
if defined Nr move /y "%~1" "%Nr%.%Typ%"
Grüße
bastla