113 lines
3.4 KiB
Batchfile
113 lines
3.4 KiB
Batchfile
@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 |