it-frosch
Goto Top

Verzeichnisse per Skript umbennen - etwas dem Namen voranstellen

Guten Morgen Kollegen,

ich habe ca. 50.000 Verzeichnisse, deren Namen ich um eine Zahl erweitern will.
Allerdings soll dabei dem Verzeichnisname beim Umbennen etwas vorangestellt werden.

Beispiel:
Ordnername alt: 123
Ordnername neu: 1000123

Einem Verzeichnis etwas anhängen kann ich damit:
for %i in ("G:\Test\3-stellig") do @for /d %j in ("%i\*.*") do @echo ren "%j" "%j-100"  

allerdings habe ich keinen Plan wie ich mein oben beschriebenes Ziel erreichen kann.

Ich will im Prinzip zu alle Ordnernamen (sind von 100 - 888888 durchnummeriert) rechnerisch 1.000.000 "dazuaddieren". face-wink
Das beschreibt es am besten.

Wenn einer der Skript-Kundigen einen Hinweis hätte, würde das echt helfen.

Grüße vom it-frosch

Content-ID: 2433388388

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

Ausgedruckt am: 21.11.2024 um 11:11 Uhr

1915348599
Lösung 1915348599 07.04.2022 um 09:55:19 Uhr
Goto Top
@echo off &setlocal enabledelayedexpansion
for /d %%a in ("D:\MeinRootOrdner\*") do (set /a "num=%%~nxa+1000000" &ren "%%a" "!num!")  
Tezzla
Tezzla 07.04.2022 um 10:01:39 Uhr
Goto Top
Zitat von @1915348599:

@echo off &setlocal enabledelayedexpansion
for /d %%a in ("D:\MeinRootOrdner\*") do (set /a "num=%%~nxa+1000000" &ren "%%a" "!num!")  

Du bist auch 'ne fleischgewordene CPU face-smile
1915348599
1915348599 07.04.2022 um 10:05:36 Uhr
Goto Top
Zitat von @Tezzla:
Du bist auch 'ne fleischgewordene CPU face-smile
0100100101100011011010000010000001110101011011100110010000100000010001100110110001100101011010010111001101100011011010000011111100100000010101110110111100100000011001000110010101101110011010110111001101110100001000000110010001110101001000000110100001101001011011100010000000101110001011100010111000100000001110100010110100101001
it-frosch
it-frosch 07.04.2022 aktualisiert um 13:34:27 Uhr
Goto Top
Hallo Pretty,

unter der Voraussetzung:

G:\Test\3-stellig
|-->123
|-->136

habe ich dein Skript angepasst:

for %i in ("G:\Test\3-stellig") do @for /d %j in ("%i\*.*") do (set /a "num=%~nxj+1000000" &ren "%j" "!num!")  

Leider benennt es das Verzeichnis nicht von 123 --> 1000123 um sondern in !num!.
Das Skript gibt an der Commandline aber den richtigen Verzeichnisnamen aus 1000123.

LÖSUNG
packe ich den Code:
@echo off
Setlocal EnableDelayedExpansion
for %%i in ("G:\Test\3-stellig") do @for /d %%j in ("%%i\*.*") do (set /a "num=%%~nxj+1000000" &ren "%%j" "!num!")  
in eine Batch Datei und starte die Datei, dann funktioniert alles wie gewünscht.

Danke dir.


Grüße vom it-frosch
1915348599
1915348599 07.04.2022 aktualisiert um 14:12:40 Uhr
Goto Top
Zitat von @it-frosch:
in eine Batch Datei und starte die Datei, dann funktioniert alles wie gewünscht.
Davon war ich ausgegangen sonst wird das "delayed expansion" nicht aktiv 😉