Script zum Umbenennen von Dateien

dinoldo

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

ich nutze dieses Script, um Dateien umzubenennen.

Irgendwo ist der Wurm in der Abfrage, ob die Aktion auch in Unterverzeichnissen ausgeführt werden soll.
Wenn ich mit "nein" antworte, dann wird nichts umbenannt. Nur bei "ja" funktioniert es.

Wo liegt bitte das Problem?

Code:
@echo off
setlocal enabledelayedexpansion
color 3f
chcp 65001
cls

echo Script zum Umbenennen von Dateien
echo ------------------------------------------------------------

set /P frage="Bitte volständigen Pfad eingeben: "
set /P ext="Bitte die Dateiendung eingeben (Beispiel pdf): "
set /P suchen="Suchen: "
set /P ersetzen="Ersetzen: "
set unterordner=nein
set /P unterordner="Unterordner berücksichtigen (ja oder nein): "

set "pfad=%frage%"
set "dateiendung=%ext%"
set "suchtext=%suchen%"
set "ersetztext=%ersetzen%"

if %unterordner%==ja (
    for /f "delims=" %%f in ('dir /s /b /a-d "%pfad%\*.%dateiendung%" 2^>nul') do (
        set "File=%%~nxf"
            echo %%~f
        ren "%%~f" "!File:%suchtext%=%ersetztext%!"
    )
)

if %unterordner%==nein (
    for %%f in (%pfad%\*.%dateiendung%) do (
        set "File=%%~nxf"
            echo %%~f
        ren "%%~f" "!File:%suchtext%=%ersetztext%!"
    )
)

%SYSTEMROOT%\EXPLORER.EXE "%frage%"

Beste Grüße,
Dino
 
Ich nutze für sowas renamer.exe ganz alte GUI seit über 10 Jahren im Einsatz.
Super Software.


Hilft dir vielleicht indirekt, weil die Software noch viel mehr kann als umbenennen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: PHuV und amorosa
BulkRenameUtility ist auch sehr mächtig, würde ne GUI bieten und ist Free for Personal use:
2022-02-19 12_58_50-Bulk Rename Utility.jpg
 
Da würde ich dann die MS PowerToys noch vorziehen, auch weil die noch mehr nette Sachen mitbringen.
 
Bezogen auf die Anforderungen des TEs aber mehr als ausreichend... Dafür deutlich übersichtlicher.
 
Vielen Dank für die Antworten. Ich würde gerne bei der CMD-Variante bleiben, weil ich in der Firma seitens der IT keine EXE-Dateien bzw. keine Programme selbst installieren darf.

Wer kann mir bitte helfen bestehendes Script anzupassen bzw. zeigen wo das Problem liegt.

Vielen herzlichen Dank für die Unterstützung im Voraus!
 
tollertyp schrieb:
Was spricht denn gegen choice?
Ich habe es nicht verstanden wie ich choise einbinden soll. Kannst du mir bitte hierzu etwas detaillierter helfen, dies in das Script zu integrieren?
 
Unabhängig von den sehr richtigen Hinweisen darauf, dass es bessere Methoden gibt, hier mal ein Kommentar zur Batch:

Da man Batch nicht wirklich debuggen kann, muss man sich mit echos begnügen. Füge ein paar echos ein und überwache damit den Verlauf einer Variable.

Darüber hinaus ist es problematisch, wenn man Variablen in Batch ohne "" vergleicht. Ist die Variable nämlich leer, also man drückt zB einfach Enter, knallt es und die Batch steigt aus. Variablen werden bei Batch nämlich anders evaluiert als es in richtigen Skript- oder gar Programmiersprachen der Fall ist. Ohne "" und mit leerer Variable steht da dann nämlich

if ==wert

und das ist syntaktisch falsch. Die if daher besser so:

if "%variable%"=="wert"


Kombiniert mit ein paar echos solltest du dem Problem so auf die Schliche kommen.
Ergänzung ()

dinoldo schrieb:
set unterordner=nein
set /P unterordner="Unterordner berücksichtigen (ja oder nein): "
Die erste Zeile kannst du dir sparen. Das ist KEIN Standardwert, wenn du bei der Eingabe Enter drückst. unterordner wird dann einfach leer sein, weil das zweite set die Variable gnadenlos überschreibt. Du musst beim nein-if daher auf leer "" oder "nein" prüfen.
 
  • Gefällt mir
Reaktionen: Darkman.X, autopilot und tollertyp
Sorry, aber da ist sogar ein Beispiel...
1645275441235.png


Und weil es eben keinen Standardwert gibt,und man auch "neeee" eingeben kann, würde ich für sowas ohne Wenn und Aber choice verwenden. Aber ohne eine konkrete Frage, wo die Einbindung hapert, ohne Eigeninitiative, werde ich auch nicht mehr dazu sagen.
 
  • Gefällt mir
Reaktionen: Raijin
Nimm PowerShell. PowerShell darf man auch in Unternehmen einsetzen, genauso wie CMD.
Wenn man mit CMD zurecht kommt, kann man es auch mit PowerShell umsetzen.
PowerShell ist außerdem weitaus flexibler als CMD.
Es gibt im Netz genügend einschlägige Lektüre und Anleitungen, da muss man sich nur einlesen.
 
Raijin schrieb:
Die erste Zeile kannst du dir sparen. Das ist KEIN Standardwert, wenn du bei der Eingabe Enter drückst. unterordner wird dann einfach leer sein, weil das zweite set die Variable gnadenlos überschreibt. Du musst beim nein-if daher auf leer "" oder "nein" prüfen.
Das ist nicht richtig. Wenn man nur ENTER drückt, dann wird in die Variable nichts eingetragen. Sie wird noch nicht mal erzeugt, wenn sie mit SET /P erst gesetzt werden soll.
Daher ist das Setzen eines Standard-Wertes in der Zeile darüber sinnvoll.
 
Ist das so? Sicher? Wenn ja, Asche auf mein Haupt. ;)
 
Ja, ist so, bin selber oft genug darüber gestolpert 😞

Du schreibst es ja sonst auch immer wieder: "Batch ist eine Bitch" 😉
 
  • Gefällt mir
Reaktionen: Raijin
Dann danke für die Korrektur. Ich hatte das im Vorwege nicht explizit geprüft.

Das fällt dem TE aber auch späteetens dann auf, wenn er wie empfohlen die echos als Debug-Information einfügt. Denn scheinbar wird das zweite if ja nicht getriggert und es stellt sich die Frage warum nicht. Ein

echo unterordner=%unterordner%

vor dem if sollte Aufschluss geben.


Und batch ist wirklich eine bitch, weil vieles nicht so ist wie es scheint und wie man es erwarten würde... :D
 
Tatsächlich ist das wirkich so mit dem Standardwert von test, dennoch sehe ich kein Argument, das gegen Choice spricht.

1645319583277.png
 
tollertyp schrieb:
dennoch sehe ich kein Argument, das gegen Choice spricht.
Versteh mich nicht falsch, ich auch nicht. Das ist der Sinn und Zweck von choice.

Mir geht es mehr darum wie man bei batch Fehler selbst findet, zB wenn es auch mit choice nicht funktioniert, weil dann der Pfad nicht stimmt, o.ä.
Gewissermaßen Hilfe, sich selbst zu helfen - bei batch eben mit echo...
 
Hatte damit auch nicht dich gemeint :-)
Und meinte eher: Selbst wenn das so ist, dass man eine Art von Standardwert setzen kann, ist das für so eine Auswahl halt immer noch nicht die beste Wahl.
 
  • Gefällt mir
Reaktionen: Raijin
Zurück
Oben