Hi,
also ähnlich hat das bei mir auch mal angefangen, und hab dann
diese Batch-Wurst fabriziert…
Also das funktioniert auch alles (vielleicht nicht der
kompakteste Code)… aber falls dann doch lieber ne GUI
willst:
http://toolsandmore.de/Central/Produkte/Software/Dat…
REM _____________________INITIALISIERUNG_________________________
title RENAMER
@echo off
echo.>log.txt
setlocal enabledelayedexpansion
set /a c=0
set /a zeros=0
REM__________________________M E N Ü_____________________________
:menu
cls
echo R E N A M E R
echo.
echo 1. String vorne einfuegen
echo 2. Nummer vorne einfuegen
echo.
set /p auswahl=Deine Auswahl:
if not %auswahl%==1 if not %auswahl%==2 if not %auswahl%==3 goto menu
cls
echo Der Aufbau des Dateinamens sieht dann so aus:
goto %Auswahl%
:1
echo [String] + [Dateiname]
echo.
echo.
echo.
call:get Kriterium
call:get Vorne
goto start
:2
echo [String] + [Nummer] + [String] + [Dateiname]
echo.
echo.
echo.
call:get Kriterium
call:get Vorne optional
call:get Nummer
call:get Schritt
call:get Zeros
call:get Hinten optional
set /a schritt=%schritt%
set /a nummer=%nummer%
set /a zeros=%zeros%
goto start
:3
goto start
_________________METHODENBEREICH FUNKTIONEN_______________________
:get
set aktuell=%1
if %1==Kriterium set Ausgabe=Bitte geben sie ein Datei-Auswahlkriterium ein (zb * oder *.mp3):
if %1==Vorne set Ausgabe=Bitte geben sie vorne anzuhaengenden String an:
if %1==Nummer set Ausgabe=Bitte geben sie eine anzuhaengende Nummer an:
if %1==Schritt set Ausgabe=In was fuer Schritten soll gezaehlt werden?:
if %1==Zeros set Ausgabe=Auf wieviel Stellen soll mit Nullen aufgefüllt werden?(-1 = Autodetect):
if %1==Hinten set Ausgabe=Bitte geben sie einen anzuhaengenden String an:
set /p %aktuell%=%Ausgabe%
if not „%2“==„optional“ if „!%aktuell%!“=="" call:get %1
echo.
goto:eof
rem leading zeros erstellen
:lzero
set znum=%nummer%
set /a g=0
:genznum
call:length znum
set /a znuml=%znuml%
if %zeros% leq %znuml% goto endgenzn
set znum=0%znum%
set /a g=!g!+1
goto genznum
:endgenzn
goto:eof
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _
rem länge eines strings zurückgeben
:length
set name=%1
set wstr=!%name%!
set /a %name%l=0
:sub
if „!wstr!“=="" goto endsub
set wstr=!wstr:~0,-1!
set /a %name%l=!%name%l!+1
goto sub
:endsub
goto:eof
_ _ _ _ _ __ _ _ _ _ _ _ _ _ _
rem benötigte zeros berechnen
:zeroneeded
set /a lastindex=%schritt%*%max%
set /a lastindex=%lastindex%+%nummer%
set lastindex=%lastindex%
call:length lastindex
set /a zeros=%lastindexl%-1
goto:eof
__________________________M A I N_________________________________
:start
rem ___Dateinamen einzeln abspeichern
for %%i in (%kriterium%) do (
set nameA!c!=%%i
set /a c=!c!+1
)
rem ___Anzahl der Dateien (benötigt zum leading zero berechnen)
set /a max=%c%
if %zeros%==-1 call:zeroneeded
set /a c=0
rem ___Umbennungsschleife
:schleife
if not zeros==0 call:lzero
set nameB!c!=%vorne%%znum%%hinten%!nameA%c%!
echo %c% „!nameA%c%!“ „!nameB%c%!“ >> log.txt
echo %c% „!nameA%c%!“ „!nameB%c%!“
ren „!nameA%c%!“ „!nameB%c%!“
if not „%nummer%“=="" set /a nummer=!nummer!+%schritt%
set /a c=!c!+1
if %max% leq %c% goto:end
goto schleife
:end
pause