mzah00
Goto Top

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]

Content-ID: 105207

Url: https://administrator.de/contentid/105207

Ausgedruckt am: 17.11.2024 um 10:11 Uhr

bastla
bastla 05.01.2009 um 12:11:54 Uhr
Goto Top
Hallo mzah00!

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%"  
Grüße
bastla

P.S.: Bitte zum Posten von Batches o. Ä. verwenden ...
mzah00
mzah00 05.01.2009 um 12:25:46 Uhr
Goto Top
You're the man! face-smile

Danke!