maffi
Goto Top

Batch Ordner umlaute umbennen

Hallo Leute

ich habe in Ornder namens
Strewe_palü_28.12.1926
Ünlü_Sandra_28.12.1926
Test_Önder_01.05.1986
usw....

ich müsste den umbennen in
Strewe_palue_28.12.1926
Uenlue_Sandra_28.12.1926
Test_Oender_01.05.1986

wie kann ich das machen? am besten wäre in Batch, da ich das inplementieren könnte.

gruß
Manuel
Kommentar vom Moderator Biber am Aug 07, 2009 um 18:58:35 Uhr
Batch Ordner umlaute umbennen
...
ich müsste den umbennen in ..
Auch dieser Beitrag hat den running gag counter zu dem gemacht, was er heute ist.

Content-Key: 108180

Url: https://administrator.de/contentid/108180

Printed on: April 19, 2024 at 17:04 o'clock

Member: moesch123
moesch123 Feb 05, 2009 at 16:53:40 (UTC)
Goto Top
Hallo,

habe es zwar nicht getestet aber es sollte eigentlich so funktionieren. Evt. musst du noch Parameter bei den Befehlen mit einbinden.
Bitte Sicher dir die Dateien vorher nochmal. Damit sie dir bei einem Fehler nicht verloren gehen.

md "C:\Dateipfad\Strewe_palue_28.12.1926"
xcopy "C:\Dateipfad\Strewe_pal_28.12.1926\*" "C:\Dateipfad\Strewe_palue_28.12.1926\"
rmdir "C:\Dateipfad\Strewe_pal_28.12.1926\"

Du erstellst also erst ein neues Verzeichnis mit dem neuen Namen.
Dann kopierst du die Daten von dem einen in das andere Verzeichnis.
Zuletzt löscht du das alte Verzeichnis.

Die komischen Zeichen im Pfad stehen da deshalb weil ein anderer Zeichencode in der CMD als in diesem Editor verwendet wird, und die Umlaute deshalb anders aussehen.

Hier eine Übersicht:

ue = 
ae = „
oe = ”

UE = š
AE = Ž
OE = ™

Ich hoffe das hilft dir weiter.

Gruß

Moesch
Member: bastla
bastla Feb 05, 2009 at 16:58:56 (UTC)
Goto Top
Hallo Maffi!

Da (was ich mir allerdings nicht erklären kann) der folgende Batch alle Umlaute als groß geschrieben interpretiert face-sad
@echo off & setlocal
for /f "tokens=2 delims=:." %%i in ('chcp') do set "CP=%%i"  
chcp 1252>nul

::Basisordner angeben, in welchem die umzubenennenden Unterordner liegen
::immer an das Ende einen "\" setzen 
set "Basis=D:\Dein Ordner\"  

for /d %%i in ("%Basis%*.*") do call :ProcessDir "%%i"  

chcp %CP%>nul
goto :eof

:ProcessDir
set "DirName=%~nx1"  
set "DirName=%DirName:Ä=Ae%"  
set "DirName=%DirName:ä=ae%"  
set "DirName=%DirName:Ö=Oe%"  
set "DirName=%DirName:ö=oe%"  
set "DirName=%DirName:Ü=Ue%"  
set "DirName=%DirName:ü=ue%"  

if not exist "%~dp1\%DirName%" echo ren %1 "%DirName%"  
goto :eof
gleich die Alternative als VBScript (und ausnahmsweise sogar kürzer face-wink):
Basis = "D:\Dein Ordner\"  
Set fso = CreateObject("Scripting.FileSystemObject")  
For Each Folder In fso.GetFolder(Basis).SubFolders
    NewFolderName = Folder.Name
	NewFolderName = Replace(NewFolderName, "Ä", "Ae")  
	NewFolderName = Replace(NewFolderName, "ä", "ae")  
	NewFolderName = Replace(NewFolderName, "Ö", "Oe")  
	NewFolderName = Replace(NewFolderName, "ö", "oe")  
	NewFolderName = Replace(NewFolderName, "Ü", "Ue")  
	NewFolderName = Replace(NewFolderName, "ü", "ue")  
	WScript.Echo Folder.Name & " --> " & NewFolderName  
	REM If Folder.Name <> NewFolderName Then Folder.Name = NewFolderName
Next
Hinweise: Das "echo" vor dem "ren" im Batch sowie das "REM" im VBScript verhindern (für die Testphase) das Durchführen der Umbenennung und müssen daher für den "Ernstfall" entfernt werden.

Die Zeile 11 ("WScript.Echo ...") im VBScript dient nur dazu, die "Vorschau" auf das Umbenennen zu erstellen und kann in weiterer Folge entfernt werden. Damit nicht für jeden Ordner ein eigenes Fenster (welches dann auch jeweils einzeln geschlossen werden muss) geöffnet wird, das VBScript von der Kommandozeile mit
cscript //nologo VBScriptName.vbs
testen.

Grüße
bastla