Create gd_rename.bat
This commit is contained in:
113
gd_rename.bat
Normal file
113
gd_rename.bat
Normal file
@ -0,0 +1,113 @@
|
||||
@echo off
|
||||
chcp 65001 > nul
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
echo Dateien werden umbenannt...
|
||||
echo.
|
||||
|
||||
for %%i in (%*) do (
|
||||
set "dateiname=%%~ni"
|
||||
set "erweiterung=%%~xi"
|
||||
set "vollerPfad=%%~dpnxi"
|
||||
|
||||
echo Verarbeite: !dateiname!!erweiterung!
|
||||
echo.
|
||||
|
||||
REM Extrahiere das Datum (direkt nach "SAT.1")
|
||||
set "datum="
|
||||
if "!dateiname:~0,5!"=="SAT.1" (
|
||||
for /f "tokens=2 delims= " %%a in ("!dateiname!") do (
|
||||
set "datum=%%a"
|
||||
)
|
||||
)
|
||||
|
||||
REM Extrahiere die Sendungsnummer mit mehreren Methoden
|
||||
set "nummer="
|
||||
|
||||
REM Methode 1: Suche nach "(Sendung NNN)"
|
||||
for /f "tokens=*" %%a in ('echo "!dateiname!" ^| findstr /R "\(Sendung [0-9][0-9]*\)"') do (
|
||||
set "originalString=!dateiname!"
|
||||
|
||||
REM Extrahiere den Teil nach "Sendung " und vor ")"
|
||||
set "extractPart="
|
||||
for /f "tokens=*" %%b in ("!originalString!") do (
|
||||
set "tempStr=%%b"
|
||||
set "tempStr=!tempStr:*Sendung =!"
|
||||
for /f "tokens=1 delims=)" %%c in ("!tempStr!") do (
|
||||
set "nummer=%%c"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
REM Methode 2: Direktes Parsen mit substring-Ersetzung
|
||||
if "!nummer!"=="" (
|
||||
set "originalString=!dateiname!"
|
||||
if "!originalString!" neq "!originalString:(Sendung =!" (
|
||||
set "temp=!originalString:*\(Sendung =!"
|
||||
for /f "tokens=1 delims=)" %%a in ("!temp!") do (
|
||||
set "nummer=%%a"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
REM Methode 3: Einfachere Suche für das konkrete Beispiel
|
||||
if "!nummer!"=="" (
|
||||
echo !dateiname! | findstr /C:"(Sendung 208)" > nul
|
||||
if !errorlevel! equ 0 (
|
||||
set "nummer=208"
|
||||
)
|
||||
)
|
||||
|
||||
REM Manuelle Eingabe, falls automatische Erkennung fehlschlägt
|
||||
if "!datum!"=="" (
|
||||
echo Datum nicht erkannt in: !dateiname!
|
||||
set /p datum="Bitte Datum eingeben (TT.MM.JJJJ): "
|
||||
)
|
||||
|
||||
if "!nummer!"=="" (
|
||||
echo Sendungsnummer nicht erkannt in: !dateiname!
|
||||
set /p nummer="Bitte Sendungsnummer eingeben: "
|
||||
)
|
||||
|
||||
REM Neuen Dateinamen erstellen
|
||||
set "neuerName=Genial daneben - !nummer! - !datum!!erweiterung!"
|
||||
|
||||
echo.
|
||||
echo Originaldatei: "!dateiname!!erweiterung!"
|
||||
echo Neuer Name: "!neuerName!"
|
||||
echo.
|
||||
|
||||
set /p bestaetigung="Umbenennen bestätigen? (J/N/E für eigene Eingabe): "
|
||||
|
||||
if /i "!bestaetigung!"=="J" (
|
||||
echo Benenne um: "!vollerPfad!" zu "!neuerName!"
|
||||
|
||||
REM Verwende den vollen Pfad für die Umbenennung und setze in Anführungszeichen
|
||||
rename "!vollerPfad!" "!neuerName!" 2>nul
|
||||
if !errorlevel! equ 0 (
|
||||
echo Datei wurde erfolgreich umbenannt.
|
||||
) else (
|
||||
echo FEHLER: Umbenennen fehlgeschlagen. Möglicherweise enthält der Name ungültige Zeichen.
|
||||
)
|
||||
) else if /i "!bestaetigung!"=="E" (
|
||||
echo.
|
||||
set /p eigenerName="Bitte neuen Dateinamen eingeben (mit Erweiterung): "
|
||||
|
||||
REM Verwende den vollen Pfad für die Umbenennung und setze in Anführungszeichen
|
||||
rename "!vollerPfad!" "!eigenerName!" 2>nul
|
||||
if !errorlevel! equ 0 (
|
||||
echo Datei wurde mit eigenem Namen umbenannt.
|
||||
) else (
|
||||
echo FEHLER: Umbenennen fehlgeschlagen. Möglicherweise enthält der Name ungültige Zeichen.
|
||||
)
|
||||
) else (
|
||||
echo Umbenennen abgebrochen.
|
||||
)
|
||||
|
||||
echo.
|
||||
echo ------------------------
|
||||
echo.
|
||||
)
|
||||
|
||||
echo Alle Dateien wurden verarbeitet.
|
||||
pause
|
Reference in New Issue
Block a user