Dateien unabhängig vom Urspungsnamen umbenennen?

dinoldo

Cadet 4th Year
Registriert
Juni 2017
Beiträge
104
Hallo Leute,

ich möchte per Batch die Dateien umbenennen.

Code:
move "T:\Prj15000\Z_Daten\000000000000_Planverfolgungsliste.xls" "T:\Prj15000\Z_Daten\1257000012458_Planverfolgungsliste.xls"
move "T:\Prj15000\Z_Daten\000000000000_Plannummernschema.xlsx" "T:\Prj15000\Z_Daten\1257000012458_Plannummernschema.xlsx"
move "T:\Prj15000\Z_Daten\000000000000_Ablagestruktur.xlsx" "T:\Prj15000\Z_Daten\1257000012458_Ablagestruktur.xlsx"
move "T:\Prj15000\Z_Daten\000000000000_Verzeichnisse.pdf" "T:\Prj15000\Z_Daten\1257000012458_Verzeichnisse.pdf"

Die Zahlen im Bsp. 000000000000, die vor dem Unterstrich stehen können abzweichen. Daher suche ich nach eine Möglichkeit, unabhängig von dem Zahlen vor dem unterstrich meine Aktion erfolgrecih auszuführen.

Über eine Lösung würde mich sehr freuen.

Besten Dank im Voraus!
 
Hallo racer320kmh,

ich habe leider keine Adminberechtigungen, um mir irgendein Tool zu installieren. Das soll per BAT erledigt sein, weil ich es als Teil einer vorhanden Script nutzen möchte.
 
Wieso haben die im Ziel eine neue Nummer? Ansonsten kann man die Zahl durch * ersetzen und als Ziel nur den Ordner. Dann werden alle verschoben.

Edit: achso, umbenennen. Das macht man doch mit ren oder nicht?
 
Warum move, reicht ein ren nicht? Und ein PS-code macht das sicher eleganter :) .
Ist nicht getestet, ist aus einem anderen Thema, also erst in einem Testordner testen.
In eine .cmd kopieren und im betreffenden Verzeichnis ausführen:
Code:
@echo off
%~d1
cd %~p1
for /f "delims=" %%i in ('dir /b /A-d *_Planverfolgungsliste.*') do ren "%%i" "1257000012458_Planverfolgungsliste.*"
for /f "delims=" %%i in ('dir /b /A-d *_Plannummernschema.*') do ren "%%i" "1257000012458_Plannummernschema.*"
rem usw. ...
pause

1257000012458 könnte man auch in einer Variablen speichern.
 
Zuletzt bearbeitet:
Hallo engine,

das hat erstmal funktioniert!

1. Ich habe das Projekt und die Projektnummer als Variable definiert, aber irgendwie funktioniert es nicht.

Der Befehl "D:\Projekte\AT\Müller\09-PL\Z_Daten" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Drücken Sie eine beliebige Taste . . .


2. Werden %~d1 und cd %~p1 überhaupt benötigt?
3. Wie sieht es mit Umlauten - geht das überhaupt in meinem Fall?

Code:
@echo off
%~d1
cd %~p1

SET Project_Path=D:\Projekte\AT\Müller\09-PL
SET prjnr=123456789

for /f "delims=" %%i in ('%Project_Path%\Z_Daten\ /b /A-d *_Planverfolgungsliste.*') do ren "%%i" "%prjnr%_Planverfolgungsliste.*"
for /f "delims=" %%i in ('%Project_Path%\Z_Daten\ /b /A-d *_Plannummernschema.*') do ren "%%i" "%prjnr%_Plannummernschema.*"
pause
 
Machs nicht zu kompliziert und du müsstest dich rein arbeiten.
Wenn du mehrere Projekt-Ordner hast, kannst du den Ausgangscode über eine neue .cmd aufrufen:
Und ich sehe gerade, es gibt Problem, wenn es mehrere Dateien von z.B. Planverfolgungsliste gibt.
Hier müsst man prüfen, ob es die umbenannte Proj.-Datei schon gibt und die dann mit einer Ziffer erweitern.

cmd irgendwo:
Code:
@echo off
call "Pfad1\Müller.cmd" "Pfad1" "prjnr1"
call "Pfad2\Meier.cmd" "Pfad2" "prjnr2"

Müller.cmd im Verzeichnis für Müller, %1 ist dann der Pfad1 und %2 ist die prjnr1:
Code:
@echo off
cd /d %1
for /f "delims=" %%i in ('dir /b /A-d "*_Planverfolgungsliste.*"') do ren "%%i" "%2_Planverfolgungsliste.*"
for /f "delims=" %%i in ('dir /b /A-d "*_Plannummernschema.*"') do ren "%%i" "%2_Plannummernschema.*"
rem usw. ...
pause

Für Meier analog im Verzeichnis Meier.

-----------------------

Aber hier der 2. code:
Code:
@echo off
SET Project_Path="D:\Projekte\AT\Müller\09-PL\Z_Daten"
SET prjnr="123456789"

for /f "delims=" %%i in ('dir /b /A-d "%Project_Path%\*_Planverfolgungsliste.*"') do ren "%Project_Path%\%%i" "%prjnr%_Planverfolgungsliste.*"
rem usw. ...
pause
 
Zuletzt bearbeitet:
Hallo engine,

der zweite Code funktioniert wie gewollt. Es bleibt mir noch das Problem mit den Umlauten.

Der ersten Code brauche ich in dem Form nicht, weil die Dateien sind eindeutig und Batch wird pro Projekt ausgeführt.
Der Anwender wird nach Projektnummer gefragt. Nach dem Eintrag der Projektnummer werden die Dateien umbenannt.
 
Umlaute? Schreibe in die 2 Zeile, also nach @echo off
chcp 1252
850 ist normal.

Die code-Ausführung wechselt in das Verzeichnis, wo die .cmd ausgeführt wird, somit entfallen alle Pfadangaben und alle Aktionen betreffen das aktuelle Verzeichnis. Geht auch mit cd /d Pfad. So nebenbei.
Code:
%~d1
cd %~p1

Ein Problem gibts noch, wenn es mehrere Dateien von z.B. Planverfolgungsliste gibt.
Dann gibts einen Fehler, das schon eine besteht.
 
Zuletzt bearbeitet:
chcp 1252 nach dem @echo off hat geholfen.

Bei der Eingabe der Projektnames via SET /P prjnr=Bitte Projektname eingeben: werden die Umlaten während der Eingane nicht richtig angezeigt, aber in der erstellte Datei danach sind diese richtig.
Gibt es die Möglichkeit bitte auch bei der Eingabe die Umlate korrekt anzuzeigen?
 
Bei mir funktionierts, was meinst du genau?

cmd-Ausgabe:
mit chcp 1252 >NUL sieht man die Ausgabe "Aktive Codepage: 1252." nicht mehr.
Code:
Aktive Codepage: 1252.
Bitte Projektname Müller eingeben:Müller

ohne chcp 1252 >NUL: Eingabe stimmt, aber die Abfrage nicht.
Code:
Bitte Projektname M³ller eingeben:Müller_ß
 
Zurück
Oben