Mit VB Script Dateien in Unterordnern umbenennen.
In drei Unterordnern müssen Dateien umbenannt werden, ohne die Dateiendung zu verändern.
Hallo zusammen.
Ich habe in einer Datei zeilenweise die neuen Dateinamen stehen. Das Format:
021_Dateiname oder auch 01I_Dateiname, also eine Buchstaben-Zahlenkombination vor dem ersten Unterstrich. In drei Unterordnern namens mp3 , php , Texte soll das Script die umzubenennenden Dateien an dem unveränderten ersten Teil des Dateinamens identifizieren und umbenennen. In den drei Unterordnern befinden sich nach der Operation also die gleichen Dateinamen, allerdings mit unterschiedlichen Endungen.
Dateien, die nicht identifiziert werden konnten, sollten in einer Protololldatei gespeichert werden.
Ich stelle mir den Ablauf so vor, das nach starten des Scriptes ein Explorerfenster sich öffnet, in dem ich die Datei mit den neuen Namen benenne, danach ist dann alles klar.
Gut währe es auch, wenn das Script den letzten Pfad abspeichert und bei erneutem Start automatisch diesen anzeigt, weil meine Ordner teilweise tief verschachtelt sind.
Kann mir hier jemand weiterhelfen?
Grüße
Fraenky
Hallo zusammen.
Ich habe in einer Datei zeilenweise die neuen Dateinamen stehen. Das Format:
021_Dateiname oder auch 01I_Dateiname, also eine Buchstaben-Zahlenkombination vor dem ersten Unterstrich. In drei Unterordnern namens mp3 , php , Texte soll das Script die umzubenennenden Dateien an dem unveränderten ersten Teil des Dateinamens identifizieren und umbenennen. In den drei Unterordnern befinden sich nach der Operation also die gleichen Dateinamen, allerdings mit unterschiedlichen Endungen.
Dateien, die nicht identifiziert werden konnten, sollten in einer Protololldatei gespeichert werden.
Ich stelle mir den Ablauf so vor, das nach starten des Scriptes ein Explorerfenster sich öffnet, in dem ich die Datei mit den neuen Namen benenne, danach ist dann alles klar.
Gut währe es auch, wenn das Script den letzten Pfad abspeichert und bei erneutem Start automatisch diesen anzeigt, weil meine Ordner teilweise tief verschachtelt sind.
Kann mir hier jemand weiterhelfen?
Grüße
Fraenky
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 72678
Url: https://administrator.de/contentid/72678
Ausgedruckt am: 26.11.2024 um 00:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo Fraenky!
Falls Du übrigens schon selbst Hand anlegen willst - zum Handwerkszeug gehören ua "InStr()" / "InStrRev()", "Left()" / "Mid()", die "Folders"- sowie "Files"-Auflistungen sowie die "File"-Eigenschaft "Name".
Grüße
bastla
... nach der Operation also die gleichen Dateinamen, allerdings mit unterschiedlichen Endungen.
Welche Endungen sind gemeint, wie ist der Zusammenhang zwischen den aufgelisteten Dateinamen und den Unterordnern / Dateien darin zu verstehen - könntest Du diesen vielleicht ganz konkret darstellen und dabei auch gleich die Möglichkeit berücksichtigen, ob/dass durch die Umbennung gleichnamige Dateien in einem Ordner entstehen könnten?... ein Explorerfenster sich öffnet, in dem ich die Datei mit den neuen Namen benenne ...
Damit ist die Auswahl der Dateiliste gemeint (unklar wegen "benenne")?Falls Du übrigens schon selbst Hand anlegen willst - zum Handwerkszeug gehören ua "InStr()" / "InStrRev()", "Left()" / "Mid()", die "Folders"- sowie "Files"-Auflistungen sowie die "File"-Eigenschaft "Name".
Grüße
bastla
Hallo Fraenky!
Es ist mir trotzdem noch nicht klar, wie nun die Umbenennung durchgeführt werden soll (also welchen Zusammenhang es zwischen den neuen Dateinamen aus der Liste und den bestehenden Dateinamen der Dateien in den Ordnern gibt) bzw wie die "Identifizierung" vonstatten gehen soll, damit
Grüße
bastla
Es ist mir trotzdem noch nicht klar, wie nun die Umbenennung durchgeführt werden soll (also welchen Zusammenhang es zwischen den neuen Dateinamen aus der Liste und den bestehenden Dateinamen der Dateien in den Ordnern gibt) bzw wie die "Identifizierung" vonstatten gehen soll, damit
Dateien, die nicht identifiziert werden konnten
als solche erkannt werden können.Grüße
bastla
Hallo Fraenky!
Vorweg:
Wann und zu welchem Thema ich Kommentare und Lösungsansätze poste, entscheide ich. Halblustige (oder doch ernsthaft anmaßende?) oder beleidigte Kommentare Deinerseits beeinflussen diese Entscheidung nur marginal.
Ob Du meine vorhergehenden Rückfragen zur Klarstellung Deines Vorhabens als Hilfestellung betrachtest, bleibt Dir überlassen.
Aus meiner diesbezüglichen Hilfe irgendeinen Anspruch auf eine (noch über den ursprünglichen Ansatz hinaus gehende) Lösung abzuleiten ist eine Fehleinschätzung.
Eine rasche Umsetzung (Deine Klarstellung des Ablaufes erfolgte gestern um 09:46:41 Uhr) geht zu Lasten der Bequemlichkeit.
Unter Berücksichtigung dieser Aspekte kann ich Dir folgende Batch-Lösung anbieten:
Verwendung: Speichere den Batch als zB "Renamer.cmd" auf dem Desktop oder erstelle zumindest eine leicht erreichbare Verknüpfung zur Batchdatei.
Navigiere im Explorer zum Ordner mit der Liste der neuen Dateinamen (und den Unterordnern "mp3", "php" und "Texte") und ziehe diese Textdatei auf die Batchdatei / die Verknüpfung.
Damit werden in den Unterordnern die Umbenennungen durchgeführt. Dateien, welche anhand des Kennzeichens (Teil vor dem ersten "-" des neuen Dateinamens) nicht gefunden wurden, scheinen danach (nach Unterordnern sortiert) in der Datei "RenameError.log" auf. Diese Datei wird im Ordner der Listendatei erstellt.
Grüße
bastla
Vorweg:
Wann und zu welchem Thema ich Kommentare und Lösungsansätze poste, entscheide ich. Halblustige (oder doch ernsthaft anmaßende?) oder beleidigte Kommentare Deinerseits beeinflussen diese Entscheidung nur marginal.
Ob Du meine vorhergehenden Rückfragen zur Klarstellung Deines Vorhabens als Hilfestellung betrachtest, bleibt Dir überlassen.
Aus meiner diesbezüglichen Hilfe irgendeinen Anspruch auf eine (noch über den ursprünglichen Ansatz hinaus gehende) Lösung abzuleiten ist eine Fehleinschätzung.
Eine rasche Umsetzung (Deine Klarstellung des Ablaufes erfolgte gestern um 09:46:41 Uhr) geht zu Lasten der Bequemlichkeit.
Unter Berücksichtigung dieser Aspekte kann ich Dir folgende Batch-Lösung anbieten:
@echo off & setlocal
pushd "%~dp1"
set "Log=%temp%\Ren.log"
if exist "%Log%" del "%Log%"
for /f "usebackq tokens=1* delims=-" %%i in ("%~nx1") do (
for %%f in (mp3 php Texte) do (
if exist "%%f\%%i_*.*" (
ren "%%f\%%i_*.*" "%%i-%%j.*"
) else (
echo %%f\%%i nicht gefunden>>"%Log%"
)
)
)
sort "%Log%" /o RenameError.log
popd
Navigiere im Explorer zum Ordner mit der Liste der neuen Dateinamen (und den Unterordnern "mp3", "php" und "Texte") und ziehe diese Textdatei auf die Batchdatei / die Verknüpfung.
Damit werden in den Unterordnern die Umbenennungen durchgeführt. Dateien, welche anhand des Kennzeichens (Teil vor dem ersten "-" des neuen Dateinamens) nicht gefunden wurden, scheinen danach (nach Unterordnern sortiert) in der Datei "RenameError.log" auf. Diese Datei wird im Ordner der Listendatei erstellt.
Grüße
bastla
Hallo Fraenky!
Zur Sicherheit nochmals, wie ich das verstanden (und umzusetzen versucht) habe:
In "Ordner" liegt eine Datei "NeueNamen.txt", Inhalt - wie oben von Dir beschrieben - je ein neuer Name (in der Form "001-Neuer-Datei-Name1") pro Zeile. Diese Datei soll auf das Script gezogen werden. Die "RenameError.log" sollte nach Durchlauf des Scripts (und falls es Fehler gab) ebenfalls in "Ordner" erstellt worden drin.
In den Unterordnern lauten die korrespondierenden Dateinamen zB "001_Alter_Name1_mit_Sonderzeichen.mp3", haben also als Trennzeichen zwischen Kennung und Namensrest "_" und nicht "-", wie es in der Datei für die neuen Namen verwendet wird.
Falls unter diesen Voraussetzungen der Fehler aufgetreten ist, wäre es sinnvoll, durch Eingabe von "dir C:\Ordner /s /b > C:\Inhalt.txt" an der Kommandozeile ein Inhaltsverzeichnis in eine Datei zu schreiben und dieses zusammen mit der "NeueNamen.txt" (auszugsweise) zu posten oder mir zu mailen.
Grüße
bastla
Kannst Du da was mit anfangen?
Nicht wirklich - hinter "mp3\" dürfte eigentlich nur ein Kennzeichen aufscheinen ...Zur Sicherheit nochmals, wie ich das verstanden (und umzusetzen versucht) habe:
C:\
|--- ...
|--- ...
|--- ...
|--- Ordner
| |--- mp3
| |--- php
| |--- Texte
In den Unterordnern lauten die korrespondierenden Dateinamen zB "001_Alter_Name1_mit_Sonderzeichen.mp3", haben also als Trennzeichen zwischen Kennung und Namensrest "_" und nicht "-", wie es in der Datei für die neuen Namen verwendet wird.
Falls unter diesen Voraussetzungen der Fehler aufgetreten ist, wäre es sinnvoll, durch Eingabe von "dir C:\Ordner /s /b > C:\Inhalt.txt" an der Kommandozeile ein Inhaltsverzeichnis in eine Datei zu schreiben und dieses zusammen mit der "NeueNamen.txt" (auszugsweise) zu posten oder mir zu mailen.
Grüße
bastla
Hallo Fraenky!
Bei inzwischen vorgenommenen Tests (auch unter Berücksichtigung von Leer- und Sonderzeichen im Dateinamen) kann ich jedenfalls (erwartungsgemäß) keinerlei aus der Namensgebung der fraglichen Datei resultierende Auswirkung auf den Ablauf des Batches feststellen.
Aus Sicherheitsgründen (um Problemen mit im Pfad enthaltenen Leerzeichen vorzubeugen) habe ich inzwischen oben in der zweiten Zeile noch Anführungszeichen ergänzt.
Grüße
bastla
Du Schelm hast die Datei neue Namen fix eingebaut. Das bedeutet, das Script erwartet eine Datei mit Namen NeueNamen.txt.
Nun muss ich Dich schon wieder enttäuschen - ich habe nichts dergleichen getan (obwohl ... da Du es mir offensichtlich zutraust ... vielleicht bei nächster Gelegenheit ... ).Bei inzwischen vorgenommenen Tests (auch unter Berücksichtigung von Leer- und Sonderzeichen im Dateinamen) kann ich jedenfalls (erwartungsgemäß) keinerlei aus der Namensgebung der fraglichen Datei resultierende Auswirkung auf den Ablauf des Batches feststellen.
Aus Sicherheitsgründen (um Problemen mit im Pfad enthaltenen Leerzeichen vorzubeugen) habe ich inzwischen oben in der zweiten Zeile noch Anführungszeichen ergänzt.
Grüße
bastla
Moin Fraenky und bastla,
Auf diese Fehlerursache wären weder bastla noch ich in den nächsten hundert Jahren gekommen. Obwohl... in Deinem Fehlerbeschreibungs-Posting ist es eigentlich klar zu erkennen.
Auf jeden Fall bin ich heilfroh, dass auch dieser Beitrag jetzt in ein paar Sekunden als "Gelöst" geschlossen werden wird.
@bastla
Wieder mal uneinschränkte Anerkennung Deiner Nervenstärke und Geduld. Respekt.
@Fraenky
Für den Fall, dass Du gar nicht ahnst, wie knapp dieser ganze Beitrag an einem jähen Verpuffen im Nirwana vorbeigeschrammt ist ...
Es war sehr sehr knapp davor.
Ich gehe davon aus, dass sich bei Dir auch die Nerven wieder beruhigt haben und der Stress etwas nachlässt.
Und dass Du diesen verbalen Abrutscher schon seit Stunden bedauerst.
Aber lass Dich bitte nie wieder zu so etwas herab bzw. hinreißen wie "..Und wenn ich die 2400 Dateien von Hand umbennen muß, weil Du mir dieses für Dich sehr einfache Script nicht schreiben willst, ....
Niemand hier sollte dieses Forum als seine persönliche 24x7x365-Gratis-Premium-Hotline verstehen oder glauben, Lösungs-Ansprüche für sein ureigenstes Elend einfordern zu können.
Und (@all) auch der Versuch wird bei den Mods hier IMMER zu einem fast unwiderstehlichen Recycling-Reflex führen.
Grüße
Biber
Wenn die Datei mit den neuen Dateinamen eine .rtf Datei ist, wirft es die Fehlermeldung aus
OMG. OMFG.Auf diese Fehlerursache wären weder bastla noch ich in den nächsten hundert Jahren gekommen. Obwohl... in Deinem Fehlerbeschreibungs-Posting ist es eigentlich klar zu erkennen.
Auf jeden Fall bin ich heilfroh, dass auch dieser Beitrag jetzt in ein paar Sekunden als "Gelöst" geschlossen werden wird.
@bastla
Wieder mal uneinschränkte Anerkennung Deiner Nervenstärke und Geduld. Respekt.
@Fraenky
Für den Fall, dass Du gar nicht ahnst, wie knapp dieser ganze Beitrag an einem jähen Verpuffen im Nirwana vorbeigeschrammt ist ...
Es war sehr sehr knapp davor.
Ich gehe davon aus, dass sich bei Dir auch die Nerven wieder beruhigt haben und der Stress etwas nachlässt.
Und dass Du diesen verbalen Abrutscher schon seit Stunden bedauerst.
Aber lass Dich bitte nie wieder zu so etwas herab bzw. hinreißen wie "..Und wenn ich die 2400 Dateien von Hand umbennen muß, weil Du mir dieses für Dich sehr einfache Script nicht schreiben willst, ....
Niemand hier sollte dieses Forum als seine persönliche 24x7x365-Gratis-Premium-Hotline verstehen oder glauben, Lösungs-Ansprüche für sein ureigenstes Elend einfordern zu können.
Und (@all) auch der Versuch wird bei den Mods hier IMMER zu einem fast unwiderstehlichen Recycling-Reflex führen.
Grüße
Biber