String variabel beschneiden
Hallo Script-Menschen
Ich habe eine Batch Datei. Diese möchte ich in einen ORdner kopieren können in denen sich Dateien befinden, die ich durch das automatisiert Script umbenennen bzw. den Namen kürzen möchte. Das Schema sieht eigentlich immer gleich aus -> ersten 14 Zeichen des Dateinamens abschneiden manchmal aber nur die ersten 8 Zeichen. Also muss die Anzahl der abzuschneidenden Zeichen Variabel sein (durch eine Userabfrage).
Das Script sieht so aus:
@echo off
FOR /F "delims=" %%i in ('Dir /B /A-H-D') do call:umbenen "%%i"
goto:eof
:umbenen
set "oldname=%~1"
set "newname=%oldname:~16%"
rename "%oldname%" "%newname%"
Wie kann ich das "~16" in eine veränderbare Variable umwandeln? Wenn ich vorher z.B. der Variable %%k den Wert 16 <<set %%k = 16>> zuweise und statt <<set "newname=%oldname:~16%">> den Befehl <<set "newname=%oldname:~%%k%">> verwende, werden nicht die ersten 16 Zeichen abgeschnitten, sondern ich erhalte den kompletten Dateinamen inkl. der Zahl 16 angehängt im Dateinamen.
Ich hoffe ich konnte meine Frage ein wenig verständlich formulieren...
Bin Dankbar für jede Hilfe!
Gruss
mzah_
[Edit Biber] Als "gelöst" markiert und verschoben von "Editoren & IDE's" nach "Batch & Shell"[/Edit]
Ich habe eine Batch Datei. Diese möchte ich in einen ORdner kopieren können in denen sich Dateien befinden, die ich durch das automatisiert Script umbenennen bzw. den Namen kürzen möchte. Das Schema sieht eigentlich immer gleich aus -> ersten 14 Zeichen des Dateinamens abschneiden manchmal aber nur die ersten 8 Zeichen. Also muss die Anzahl der abzuschneidenden Zeichen Variabel sein (durch eine Userabfrage).
Das Script sieht so aus:
@echo off
FOR /F "delims=" %%i in ('Dir /B /A-H-D') do call:umbenen "%%i"
goto:eof
:umbenen
set "oldname=%~1"
set "newname=%oldname:~16%"
rename "%oldname%" "%newname%"
Wie kann ich das "~16" in eine veränderbare Variable umwandeln? Wenn ich vorher z.B. der Variable %%k den Wert 16 <<set %%k = 16>> zuweise und statt <<set "newname=%oldname:~16%">> den Befehl <<set "newname=%oldname:~%%k%">> verwende, werden nicht die ersten 16 Zeichen abgeschnitten, sondern ich erhalte den kompletten Dateinamen inkl. der Zahl 16 angehängt im Dateinamen.
Ich hoffe ich konnte meine Frage ein wenig verständlich formulieren...
Bin Dankbar für jede Hilfe!
Gruss
mzah_
[Edit Biber] Als "gelöst" markiert und verschoben von "Editoren & IDE's" nach "Batch & Shell"[/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 105207
Url: https://administrator.de/contentid/105207
Ausgedruckt am: 17.11.2024 um 10:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo mzah00!
Sollte etwa so gehen (um die Kontrolle der eingegebenen Zeichenanzahl musst Du Dich natürlich noch kümmern):
Grüße
bastla
P.S.: Bitte zum Posten von Batches o. Ä. verwenden ...
Sollte etwa so gehen (um die Kontrolle der eingegebenen Zeichenanzahl musst Du Dich natürlich noch kümmern):
@echo off & setlocal
set /p "Lang=Wie viele Zeichen sollen abgeschnitten werden?"
for /f "delims=" %%i in ('dir /b /a-h-d') do call :umbenen "%%i"
goto :eof
:umbenen
set "oldname=%~1"
call set "newname=%%oldname:~%Lang%%%"
ren "%oldname%" "%newname%"
bastla
P.S.: Bitte zum Posten von Batches o. Ä. verwenden ...