Umbenenne mehrer Dateinamen

Pümdog

Cadet 3rd Year
Registriert
Nov. 2011
Beiträge
51
Umbenennen mehrerer Dateinamen

Hallo zusammen,

ich habe folgende Frage:

Beim Erzeugen einer DWG-Datei z.B mit dem Namen: „PLAN_W092 BT A Fundamente Werkstatt E0 M_1_50 Index 2.dwg“ entsteht immer am Anfang „PLAN_“
Ich möchte aber nachher nur alles hinter „PLAN_“ als Dateinamen stehen haben. Das CAD-Programm gibt es leider nicht anders heraus.
Kennt jemand eine Möglichkeit dies mit einem cmd. Script zu löschen für mehrere Datei?

Viel Dank im Voraus

Grüße :cool_alt:
 
Zuletzt bearbeitet:
Ich kann dir das kleine Programm ReNamer empfehlen!
Da kannst du einstellen das du zb. PLAN_ weg haben willst, oder die ersten 5 Zeichen.
http://www.chip.de/downloads/ReNamer_22150450.html
Mit nem cmd script kann man zwar auch umbennen, aber ich wüsste nicht, wie man es dort am einfachsten lösen kann ...

Grüße
 
Zuletzt bearbeitet:
Vielen Dank dafür, aber zusätzliche Programme sind auf dem Geschäftsrechner keine Alternative.
Ein Script wäre das Beste!
 
Versuche vom Command Prompt

ren PLAN_*.* *.*

Aber erst ausprobieren, weiß nicht ob es unter Windows geht.
 
Ich habe herum experimentiert, aber habe es nicht hin bekommen.
Da wird es doch wohl ein Befehl geben? :o
 
Ich versuch mal übersichtlich meinen Senf dazu zu äußern.

miac schrieb:
Versuche vom Command Prompt
ren PLAN_*.* *.*

Damit löst man nur ein Umbenennen auf den bestehenden Dateinamen aus. Kann nicht klappen.


Pümdog schrieb:
Ich habe herum experimentiert, aber habe es nicht hin bekommen.
Da wird es doch wohl ein Befehl geben? :o

Gibt es. Nur nicht ganz trivial, daher hol ich etwas aus, damit man nicht nur die Lösung bekommt, sondern auch versteht.


nitech schrieb:
sowas z.b.:
for /r %x in (PLAN_.*) do ren "%x" *.*

Kann nicht klappen. Hier steht nirgends die Regel wie die neue Datei auszusehen hat.


miac schrieb:
Ja, der rename Befehl arbeitet leider nicht so, wie man meinen könnte.

Doch tut er. Aber eben nach Maschinenlogik. Ob die auch zur persönlichen Logik passt ist eine andere Frage.


Packe folgenden Code in eine Batch Datei. Speicher diese in deinem Ordner mit den Plan_ Dateien ab, oder passe den dir Befehl aufs Zielverzeichnis an:
Code:
for /F "delims=;" %%i IN ('dir Plan_*.* /b') do (
set Datei=%%i
ren "%%i" "!Datei:~5,100!"
)

- Schleife zum suchen aller Plan_ Dateien
- einzelnes Umbenennen von der Quelldatei zur Zieldatei und ab dem 6. bis zum 100. Zeichen

Beim Ausführen kommt es jetzt zu folgendem Problem: Die Variable Datei wird nicht in der Schleife angepasst da die Anpassung erst am Befehlsende erfolgt. Da es sich nur um 1 Befehl handelt, kann man mit der Schleife nicht mehrere Dateien bearbeiten. Beim Umbenennen bekommt so auch Datei1 einen kaputten Namen. Beim 2.Aufruf bekommt Datei2 den Namen vom ersten Aufruf, also Datei1. usw. Also Datenchaos. Daher muss man mit verzögerten Variablen arbeiten, im Code oben durch ! gekennzeichnet.

Um die Interpretation der Variable zu ändern musst du Befehlsverzögerung der cmd.exe aktivieren. Dazu rufst du mittels Win+r das Ausführen Fenster auf und startest eine neue CMD wie folgt:

cmd /V:ON

In dieser cmd funktioniert die Batch dann.

Durch die Verwendung von ! ist sichergestellt, daß die Batch keine Änderungen durchführt, falls du sie mal ohne Befehlsverzögerung aufrufst. So ein cmd Interpreter kann mit ! dann nichts anfangen. Solltest also vorm Datenchaos geschützt sein.
 
Zuletzt bearbeitet: (nochmal überarbeitet)
Bei allem Hass kann ich mir doch irgendwie nicht vorstellen, dass es mit der Commandline keinen einfachen Weg gibt Dateien umzubenennen. Ich kann dir diesbezüglich zwar nicht helfen, aber je nachdem welches Windows du einsetzt hast du die Powershell zu Verfügung. Damit ist das ganze ein Einzeiler und sieht so aus (vorrausgesetzt du bist im richtigen Ordner):
Code:
Dir | Rename-Item -NewName { $_.name -replace "PLAN_","" }
 
easy.2ci schrieb:
Doch tut er. Aber eben nach Maschinenlogik. Ob die auch zur persönlichen Logik passt ist eine andere Frage.


Was für ein Quatsch.
Das ist keine Maschinenlogik sondern die Logik eines Interpreters.
Das DOS bzw. Windows hier die Wildcards nicht, wie gedacht, ersetzt, bzw. nicht in der Lage ist, wie z.B. Unix, reguläre Ausdrücke zu interpretieren, ist nun einmal so.

Das der CMD Interpreter seine Eigentümlichkeiten hat, ist auch hinlänglich bekannt.
 
miac schrieb:
Was für ein Quatsch.
Das ist keine Maschinenlogik sondern die Logik eines Interpreters.
Das DOS bzw. Windows hier die Wildcards nicht, wie gedacht, ersetzt, bzw. nicht in der Lage ist, wie z.B. Unix, reguläre Ausdrücke zu interpretieren, ist nun einmal so.
Das der CMD Interpreter seine Eigentümlichkeiten hat, ist auch hinlänglich bekannt.

Deine Lösung mit "ren PLAN_*.* *.*" wird unter Linux mit mv anstatt ren aber auch nicht funktionieren.
 
Ja, da braucht es einen kleinen regulären Ausdruck.

Ich hatte ja auch nur geschrieben, daß er es mal probieren soll, da die CMD Befehle ja einfacher gestrickt sind und eine Ersetzung "wie man sich das denkt" stattfinden hätte können.
 
Nach Anleitung von "easy.2ci " kommt folgendes:

Datei.jpg
 
Hast du die CMD wie beschrieben gestartet? Schick mir mal ein Beispieldateinamen von dir, dann kann ichs hier nachstellen.

edit: Ich hab mir folgende Datei zum testen erstellt: "PLAN_Ü1101 Grundriss Fundamente M. 1_200 Index 2_3_3_6.dwg"

Und der Code funktioniert. Wenn du natürlich bereits eine Datei hast, die ohne das PLAN_ am Anfang heisst, dann klappt das umbenennen natürlich nicht. Hast du das sichergestellt?

Von was für einem OS sprechen wir hier eigentlich? Ich bin auf Windows 7 unterwegs.
 
Zuletzt bearbeitet:
Man kann in nem Skript auch einfach die Variable für die verspätete Ausführung setzten und muss so auf nichts mehr achten.
setlocal enableDelayedExpansion

Ich bin wenn möglich aber immernoch für die Powershell-Lösung, da die in meinen Augen doch um einiges eleganter ist.
 
Mit dem Skript und dem hinzufügen der Variablen funktioniert es hier aufm Rechner.
OS ist Windows 7.

Vielen Dank euch, echt spitze!

Gruß
Ergänzung ()

Und könnt ihr mir sagen, wie ein Script aussieht, das vor einen Dateinamen immer
"0004152100006021" steht?

Bin in solchen Dingen erst am Anfang...

Danke
 
Zurück
Oben