Dateinamen einlesen, auftrennen, umsortieren ... Datei umbenennen
Hi,
schöne Ostern erst mal an alle!!!
ich wollt mal wieder ne tolle batch schreiben aber ich scheiter schon im Ansatz!!! Ich hab hier schon alles durchforstet und auch einige Ansätze gefunden - so richtig bin ich damit aber nicht weiter gekommen ....
der Plan: Dateien in einem Ordner umbenennen - und zwar:
Dateiname0001.jpg in 01-Dateiname.jpg
Dateiname0002.jpg in 02-Dateiname.jpg
Dateiname_occlusion0001.jpg in 01-Dateiname-occlusion.jpg
Dateiname_occlusion0002.jpg in 02-Dateiname-occlusion.jpg
ich versuch's glaub ich wieder viel zu kompliziert anzugehen ... mit welchem Befehl geht das denn? geht das in einem Durchgang oder muss man das in mehrerern Schritten machen?
schöne Ostern erst mal an alle!!!
ich wollt mal wieder ne tolle batch schreiben aber ich scheiter schon im Ansatz!!! Ich hab hier schon alles durchforstet und auch einige Ansätze gefunden - so richtig bin ich damit aber nicht weiter gekommen ....
der Plan: Dateien in einem Ordner umbenennen - und zwar:
Dateiname0001.jpg in 01-Dateiname.jpg
Dateiname0002.jpg in 02-Dateiname.jpg
Dateiname_occlusion0001.jpg in 01-Dateiname-occlusion.jpg
Dateiname_occlusion0002.jpg in 02-Dateiname-occlusion.jpg
ich versuch's glaub ich wieder viel zu kompliziert anzugehen ... mit welchem Befehl geht das denn? geht das in einem Durchgang oder muss man das in mehrerern Schritten machen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139801
Url: https://administrator.de/contentid/139801
Ausgedruckt am: 25.11.2024 um 03:11 Uhr
15 Kommentare
Neuester Kommentar
Set fso = CreateObject("Scripting.FilesystenObject")
Set fldr = fso.GetFolder("DerPfad")
For Each fl in fldr.files
File.name = Mid(fl.Name, Len(fl.Name) - 6, 2) & Left(fl.Name, Len(fl.Name) - 8) & ".jpg"
Next
Das Umbenennen müsste evtl angepasst werden, wenn nich alle jpg und/oder die Nummern nicht immer 4-stellig sind
Hallo evotoy!
Als Batch ungetestet etwa so (ebenfalls unter der Voraussetzung, dass die letzen 4 Stellen entfernt werden sollen):
Das "
Grüße
bastla
Als Batch ungetestet etwa so (ebenfalls unter der Voraussetzung, dass die letzen 4 Stellen entfernt werden sollen):
@echo off & setlocal
set "Ordner=D:\Testordner"
set "Maske=*.jpg"
pushd "%Ordner%"
for /f "delims=" %%i in ('dir /b %Maske%') do set "Name=%%~ni" & call :ProcessFile "%%i"
popd
goto :eof
:ProcessFile
echo ren %1 "%Name:~-2%%Name:~,-4%%~x1"
echo
" in der Zeile 11 steht zum Testen da - so wird der Befehl zum Umbenennen nur angezeigt, aber noch nicht ausgeführt; wenn's vernünftig aussieht, einfach dieses "echo
" entfernen ...Grüße
bastla
@AndreasBrecht
lösen (und "
Grüße
bastla
wenn nich alle jpg
... lässt sich einfach über... & "." & fso.GetExtensionName(fl.Name)
GetBaseName()
" könntest Du dann auch gleich einbauen) ...Grüße
bastla
Hallo evotoy!
Etwas zerpflückt am Beispiel der Datei "Dateiname0001.jpg":
Zur Teilstringbildung siehe
Grüße
bastla
setzte den Namen zusammen aus den letzten zwei Zeichen des alten Namens und dem alten Namen ohne die letzten vier zeichen?
Genau das ist der Plan. Etwas zerpflückt am Beispiel der Datei "Dateiname0001.jpg":
%1
ist der beim Aufruf übergebene komplette Dateiname "Dateiname0001.jpg" (das Unterprogramm ab ":ProcessFile
" verhält sich in dieser Hinsicht wie eine weitere Batchdatei und übernimmt daher Aufrufparameter als %1, %2 etc)%Name:~-2%
liefert "01" (in der Variablen %Name% steht ja nur "Dateiname0001"),%Name:~,-4%
(könnte auch%Name:~0,-4%
geschrieben werden) bildet den Teilstring ab Zeichen 1 (bzw beginnend nach dem "Zeichen Nr. 0") bis 4 Zeichen vor dem Ende, also "Dateiname0001", und%~x1
steuert den Typ (samt Punkt davor) bei - demnach ".jpg"
Zur Teilstringbildung siehe
set /?
...Grüße
bastla
Hallo evotoy!
Bevor ich mir das Ganze später genauer ansehe, ein Hinweis: Anstelle von "
Grüße
bastla
ich hab mal versucht, meine letzte batch und die neue zusammen zu ###en.
Vielleicht wäre "gut zureden" (auch im Hinblick auf den Osterfrieden) die bessere Strategie - Biber (und wenn sich einer mit Batchen auskennt, dann er) meint jedenfalls, ein Batch hätte auch Gefühle ... Bevor ich mir das Ganze später genauer ansehe, ein Hinweis: Anstelle von "
goto :1
" und "goto :5
" wäre jeweils "goto :eof" zu schreiben.Grüße
bastla
Hallo evotoy!
Hoffentlich zicken die jetzt nicht doch herum (getestet hab' ich nämlich nicht ):
Die beiden Unterprogramm (hätte ich vielleicht nicht mit ":2" und ":4" benannt - sonst heißt es gleich wieder: "Ich bin nur eine Nummer für Dich - nicht mal die Mühe, mir einen Namen zu geben, hast Du Dir gemacht!" ) habe ich etwas prominenter am Anfang des Batches platziert - ob's der Performance hilft, musst Du selber beurteilen ...
Das "Ordner-Erstellen" ist jetzt etwas eingedampft, und die Unterdrückung der Fehler (mit "
Grüße
bastla
Hoffentlich zicken die jetzt nicht doch herum (getestet hab' ich nämlich nicht ):
@echo off & setlocal & goto :Start
:2
set name=%name:_occlusion=-occlusion%
ren %1 {{comment_strings:43180491652}}
echo %1 "%Name:~-2%-%Name:~,-4%%~x1"
goto :eof
:4
if not exist "%Name1:~3%" (
echo __________________________________________
echo Erstelle Ordner : %Name1:~3%
echo __________________________________________
md "%Name1:~3%"
)
move "%name1%%~x1" "%Name1:~3%\"
goto :eof
:Start
echo __________________________________________
echo __________/// Umbenennen \\\_____________
echo __________________________________________
set "MaskRename=*00??.*"
for /f "delims=" %%i in ('dir /b %MaskRename%') do set "Name=%%~ni" & call :2 "%%i"
echo __________________________________________
echo Umbenennen beendet.
echo __________________________________________
echo\
echo\
echo __________________________________________
echo ___________/// Sortieren \\\_____________
echo __________________________________________
set "MaskSort=??-*.*"
for /F "delims=" %%i in ({{comment_strings:23702316724}}) do set "Name1=%%~ni" & call :4 "%%i"
echo __________________________________________
echo Sortiervorgang beendet.
echo __________________________________________
pause
Das "Ordner-Erstellen" ist jetzt etwas eingedampft, und die Unterdrückung der Fehler (mit "
2>nul
") beim Erstellen des Ordners bzw beim Verschieben habe ich entfernt - wenn es hier einen Fehler gibt, solltest Du den auch gemeldet bekommen.Grüße
bastla
[OT]
BTW, ich war ganz fest davon ausgegangen, dass der versehentlich vergessene Buchstabe ein "W" wäre und war total überrascht von einem "M".
Dachte, es ginge ums Zusammenbraten und nicht ums Zusammenwerfen...
Na egal.... alles bleibt gut...
Und ich wäre ja hier im Forum der Letzte, der irgendwelche ungelegten Haarspaltereien über den Zaun bricht...äh...oder so ähnlich.
Grüße
Biber
[/OT]
Zitat von @evotoy:
oh ... kleiner tippfehler!! ich korrigier das mal - nich das die Batches eingeschnappt sind
Danke, evotoy, fürs Korrigieren..oh ... kleiner tippfehler!! ich korrigier das mal - nich das die Batches eingeschnappt sind
BTW, ich war ganz fest davon ausgegangen, dass der versehentlich vergessene Buchstabe ein "W" wäre und war total überrascht von einem "M".
Dachte, es ginge ums Zusammenbraten und nicht ums Zusammenwerfen...
Na egal.... alles bleibt gut...
Und ich wäre ja hier im Forum der Letzte, der irgendwelche ungelegten Haarspaltereien über den Zaun bricht...äh...oder so ähnlich.
Grüße
Biber
[/OT]