Ordner umbenennen per Script
Hallo,
ich habe ca. 300 Ordner auf einer Partition X liegen. Diese Ordner liegen im Verzeichniss x:\Daten.
Die Ordner sind alle etwas umständlich benannt, um diese zu sortieren möchte ich gerne aus einer Txt Datei die in diesen 300 Ordnern liegt die Zeile in den Ordnernamen einbinden.
Irgendwie müssten das Umbennen fortgesetzt werden können wenn weitere Ordner dazu kommen.
evtl ne Idee, ich weiß wohl die Schritte aber wie man diese umsetzt nicht....
Gruß
ich habe ca. 300 Ordner auf einer Partition X liegen. Diese Ordner liegen im Verzeichniss x:\Daten.
Die Ordner sind alle etwas umständlich benannt, um diese zu sortieren möchte ich gerne aus einer Txt Datei die in diesen 300 Ordnern liegt die Zeile in den Ordnernamen einbinden.
Irgendwie müssten das Umbennen fortgesetzt werden können wenn weitere Ordner dazu kommen.
evtl ne Idee, ich weiß wohl die Schritte aber wie man diese umsetzt nicht....
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 02.10.2009 um 12:11:42 Uhr
Verschoben von "Tools & Utilities" nach "Batch & Sowat".
Vermutlich ist dieser Beitrag die Mutter aller umbennen-running gag counter-Fortschreibungen.
Bei rgc=#621 hab ich aufgegeben...
Vermutlich ist dieser Beitrag die Mutter aller umbennen-running gag counter-Fortschreibungen.
Bei rgc=#621 hab ich aufgegeben...
Content-ID: 125368
Url: https://administrator.de/forum/ordner-umbenennen-per-script-125368.html
Ausgedruckt am: 10.04.2025 um 11:04 Uhr
20 Kommentare
Neuester Kommentar
Hallo bodyparts!
Ich fürchte, mit so detaillierten Angaben wie
Grüße
bastla
Ich fürchte, mit so detaillierten Angaben wie
... aus einer Txt Datei die in diesen 300 Ordnern liegt die Zeile in den Ordnernamen einbinden
könntest Du uns überfordert haben ...aus einer zufällig ausgewählten Txt Datei die in diesen 300 Ordnern liegt irgendeine Zeile an beliebiger Position in den Ordnernamen einbinden ...
sollte aber zu machen sein, etwa unter Verwendung von Bausteinen wie "for /d
", "set /p<TxtDatei
" oder "for /f
" und "findstr /n
", etcGrüße
bastla
Moin bodyparts,
Irgendwie bin ich jetzt nicht wirklich überrascht davon...
Bitte, bodyparts, wenn Du doch die Schritte weisst, plaudere sie doch mal aus, menno.
Wir haben in diesem Seitenarm des Forums ein Art Kronzeugenregelung - Dir wird nichts passieren.
Verspricht
Biber
Irgendwie bin ich jetzt nicht wirklich überrascht davon...
Irgendwie müssten das Umbennen fortgesetzt werden können
Auch davon nicht...*seufz*...---> rgc=#616ich weiß wohl die Schritte aber wie man diese umsetzt nicht....
Das Originalzitat ist wohl eher "Die Worte hör' ich schon, allein mir fehlt der Glaube".Bitte, bodyparts, wenn Du doch die Schritte weisst, plaudere sie doch mal aus, menno.
Wir haben in diesem Seitenarm des Forums ein Art Kronzeugenregelung - Dir wird nichts passieren.
Verspricht
Biber
Hallo bodyparts!
Hatte eigentlich schon gar nicht mehr mit Dir gerechnet ...
Versuch es so:
Solange in der Zeile 12 das "echo" steht, wird der Befehl für das Umbenennen nur angezeigt, aber noch nicht ausgeführt.
Grüße
bastla
Hatte eigentlich schon gar nicht mehr mit Dir gerechnet ...
Versuch es so:
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
@echo off & setlocal
::Ordner immer mit abschließendem \ angeben
set "Ordner=X:\Daten\"
set "Datei=Daten_info.txt"
for /d %%i in ("%Ordner%*.*") do call :ProcessDir "%%i"
pause
goto :eof
:ProcessDir
set p Name=<"%~1\%Datei%"
for /f "tokens=1*" %%a in ("%Name%") do echo ren %1 "%%b"
goto :eof
Grüße
bastla
Hallo bodyparts!
Soferne die Datei "Daten_info.txt" nicht aus anderen Gründen (mit dem gleichen Namen) erhalten bleiben muss, könntest Du zusätzlich die bisherige Zeile 12 ändern auf
(das zweite "echo" soll wiederum ein gefahrloses Testen erlauben) und damit die "Daten_Info.txt" umbenennen um zu kennzeichnen, dass der Ordner bereits umbenannt wurde.
Im Übrigen macht es aber auch nix, wenn ein Ordner auf den selben Namen "umbenannt" wird - daher kann der Batch für längere Zeit eingesetzt werden, um auch später hinzukommende Ordner noch zu erfassen.
Grüße
bastla
Ich sehe grade, das nicht alle Ordner wohl diese TXT Datei besitzen.
Um diesen Fall zu berücksichtigen, kannst Du folgende Zeile 11 einfügen:if not exist "%~1\%Datei%" goto :eof
for /f "tokens=1*" %%a in ("%Name%") do echo ren %1 "%%b" && echo ren "%~1\%Datei%" "Datei_Info_erledigt.txt"
Im Übrigen macht es aber auch nix, wenn ein Ordner auf den selben Namen "umbenannt" wird - daher kann der Batch für längere Zeit eingesetzt werden, um auch später hinzukommende Ordner noch zu erfassen.
Grüße
bastla
Hallo bodyparts!
Da ich mir nun gar nicht vorstellen kann, woran das liegt, noch ein Versuch: Füge die folgende Zeile unmittelbar nach der Zeile "
Jetzt sollten zumindest alle Ordner bzw, wenn enthalten, auch die jeweilige "Daten_info.txt" (auch, wenn diese in einem Unterordner liegen sollte) oder eine diesbezügliche Fehlermeldung angezeigt werden - wenn nix zu sehen ist, stimmt die Ordnerangabe in Zeile 3 nicht.
Grüße
bastla
Da ich mir nun gar nicht vorstellen kann, woran das liegt, noch ein Versuch: Füge die folgende Zeile unmittelbar nach der Zeile "
:ProcessDir
" ein:echo %1 & dir /s /b "%~1\%Datei%"
Grüße
bastla
Hallo bodyparts!
Poste bitte einmal den derzeitigen Stand des Batches.
Und: Enthält die erste Zeile der Textdatei Anführungszeichen, bzw was folgt genau auf "Name"?
Grüße
bastla
... aber der Ordner wird nicht umbenannt....
Solange vor dem "ren" ein "echo" steht, wird auch nur der Befehl zum Umbenennen angezeigt (das sollte aber eigentlich funktionieren) ...Poste bitte einmal den derzeitigen Stand des Batches.
Und: Enthält die erste Zeile der Textdatei Anführungszeichen, bzw was folgt genau auf "Name"?
Grüße
bastla
Hallo bodyparts!
Die Zeilen 12, 15 und 18 (die vor der Zeile 13 sinnvoller wäre und in der das "
Abgesehen davon, dass meine letzte Frage oben noch nicht beantwortet ist, kann ich, solange Du nicht die entstandenen Ausgaben postest, nicht mehr tun, als deren Interpretation Dir zu überlassen ...
Grüße
bastla
Die Zeilen 12, 15 und 18 (die vor der Zeile 13 sinnvoller wäre und in der das "
echo
" nach dem "do
" fehlt - hier soll ja tatsächlich die erste Zeile nur angezeigt werden) sind für die Fehlersuche gedacht und sollten entsprechende Ausgaben produzieren, an denen Du Dich dann orientieren kannst - wenn Du dann noch aus dem "echo off" in Zeile 2 ein "echo on" machst, kannst Du ganz genau sehen, welche Befehle wie ausgeführt werden.Abgesehen davon, dass meine letzte Frage oben noch nicht beantwortet ist, kann ich, solange Du nicht die entstandenen Ausgaben postest, nicht mehr tun, als deren Interpretation Dir zu überlassen ...
Grüße
bastla
... konnte doch noch etwas tun, nämlich den schon ewig fehlenden "/" vor dem "p" nachtragen - so sollte es aber nun wirklich was werden:
Sorry, dass mir das erst jetzt aufgefallen ist ... 
Grüße
bastla
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
@echo off & setlocal
set "Ordner=X:\Daten\"
set "Datei=Daten_info.txt"
for /d %%i in ("%Ordner%*.*") do call :ProcessDir "%%i"
goto :eof
:ProcessDir
if not exist "%~1\%Datei%" goto :eof
set /p Name=<"%~1\%Datei%"
for /f "tokens=1*" %%a in ("%Name%") do ren %1 "%%~b" && ren "%~1\%Datei%" "Datei_Info_erledigt.txt"
goto :eof
Grüße
bastla
Hallo bodyparts!
Abgesehen davon, dass
Bisher war ich davon ausgegangen, dass diese mit dem Wort "NAME" beginnt und dahinter erst der gewünschte Name angeführt ist - deshalb wird auch alles vor dem ersten Leerzeichen weg gelassen. Wenn nun tatsächlich die gesamte erste Zeile vor dem bisherigen Ordnernamen eingefügt werden soll, dann eben als Zeile 12:
Grüße
bastla
Abgesehen davon, dass
aus "File5 C" ( erste Zeile) wird "Ordnername C" und nicht "Ordnername File C"
wenn überhaupt nur heißen könnte:aus "File5 C" ( erste Zeile) wird "C Ordnername" und nicht "File5 C Ordnername"
fehlt mir immer noch die Information, was denn nun die erste Zeile genau enthält ...Bisher war ich davon ausgegangen, dass diese mit dem Wort "NAME" beginnt und dahinter erst der gewünschte Name angeführt ist - deshalb wird auch alles vor dem ersten Leerzeichen weg gelassen. Wenn nun tatsächlich die gesamte erste Zeile vor dem bisherigen Ordnernamen eingefügt werden soll, dann eben als Zeile 12:
ren %1 "%Name% %~nx1" && ren "%~dp1%Name% %~nx1\%Datei%" "Datei_Info_erledigt.txt"
bastla