Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 03.09.2009 um 13:08:51 Uhr
Titel geändert von "Batch Script für File- und Dir-namen" auf "Ersetzen von Zeichen in Datei- und Verzeichnisnamen in allen Unterordnern"

Grüße
Biber
GELÖST

Ersetzen von Zeichen in Datei- und Verzeichnisnamen in allen Unterordnern

Frage Entwicklung Batch & Shell

Mitglied: chinatiger

chinatiger (Level 1) - Jetzt verbinden

02.09.2009, aktualisiert 03.09.2009, 14966 Aufrufe, 24 Kommentare, 1 Danke

Hallo allerseits,

es gibt zwar schon eine Menge Beiträge um bestimmte Zeichen per Batchscript zu ersetzen, aber leider ist die Aufgabe für das Script, dass ich benötige, etwas komplexer und meine Erfahrungen mit Batch-Programmierung gehen gegen 0 :/

Das Batchscript muss folgendes können:

Innerhalb eines beliebigen Ordners (alternativ auch dem in dem es liegt) und allen darin befindlichen Unterordnern sowohl die Dateinamen als auch die Ordnernamen nach bestimmten zeichen durchsuchen und diese ersetzen.

Dabei sollen Leerzeichen durch einfache Unterstriche "_", Umlaute wie ä in ae, ß zu ss ersetzt, Klammern entfernt und Punkte/Kommata durch Unterstriche ersetzt werden. Bei den Punkten darf aber natürlich nicht der Punkt vor der Dateiendung entfernt werden. Ich weiss die Liste ist lang... und fragt mich bitte nicht wie man dazu kommt, Dateien so dermaßen be...scheiden zu benennen ;) Länge, Typ usw. ist von File zu File völlig verschieden, Ordner ebenso.

Ich habe schon versucht die Batchscripte aus einigen Beiträgen entsprechend zu modifizieren, aber so wirklich laufen wollen sie nicht

Ich hoffe ihr könnt mir da weiterhelfen.

Mit freundlichen Grüßen
Mitglied: 45877
02.09.2009 um 14:29 Uhr
hallo,

schau dir mal das hier an.

http://www.filerenamer.net
Bitte warten ..
Mitglied: pieh-ejdsch
03.09.2009 um 02:39 Uhr
Hi Chinatiger,

das ist ja mal eine richtig Fordernde Aufgabenstellung solche schönen Aufgaben müsste es hier viel mehr geben.
plaese Feedback

@45877
warum setzt Du so ein tool hier in den Batchbereich?
es geht hier um ne Batch und nicht so ein Klicktool
also bitte lenke nicht von den Anforderungen ab, welche hier gestellt werden.

ich hab mich mal drangesetzt hat zwar 1...2 Stunden gedauert aber es müsst so gehen ich habs getestet.

Es hat weniger mit Erfahrung zu tun als mit Lokig ranzugehen - wegen der UnterOrdner da ja nur die tiefsten zuerst umbenannt werden können also habe ich eine Vorsortierung der Unterordner nach Höchster Tiefe gemacht.

Die Codepage braucht nicht umgestellt zu werden.

Du kannst das Verzeichnis auf den Batch ziehen oder im Verzeichnis ausführen ist egal der Effekt ist der gleiche. Also auch ne Partition wenn es nicht den Variablencache sprengt.

Der Batch benennt dir erst alle UnterOrdner um und zwar zuerst den der in der tiefsten Verzeichnisstuktur ist .
sonst würde es nicht gehen.
Anschliesend alle Dateien.

erstmal zeigt dir der Batch an was er machen würde. wenn dass alles so passt entfernst Du das @echo ganz unten.

[Edit]
Habe den Code noch einmal ein bisschen angepasst
[/Edit]

01.
::----schnipp---Unterordner-und-enthaltene-Dateien-Umbenamsen-fuer-CDVD.bat 
02.
:: Zum Anzeigen ist @echo vor den ren Befehlen eingefügt 
03.
:: dieses zum tatsächlichen Durchführen entfernen. 
04.
@echo off & setlocal 
05.
if "%~1"=="" (for /f "tokens=2,*" %%i in ('dir "''zxy." 2^>nul') do if "%%i"=="von" (set "pfad=%%~fj" )) else set "pfad=%~1" 
06.
PushD "%pfad% 
07.
set /a deep=0 , maxdeep=0 , mindeep=0 , subfold=0 , folders=0 , files=0 & set vfN=& set vmn=& set vdn=& set fNL=9& set "NL=9"  
08.
::Max Verzeichnistiefe festellen 
09.
set setdeep1=1 
10.
for /f "tokens=*" %%i in ('dir /a:d /b /s 2^>nul') do set "file=%%i" & set "foldername=%%i" & set deep=0& call :folderren 
11.
set "setdeep1=" 
12.
if %folders% gtr 0 ( 
13.
	echo %folders% Ornder entsprechen den Kriterien! 
14.
	if %mindeep% equ %maxdeep% ( 
15.
		for /f "tokens=1* delims==" %%a in ('set ... 2^>nul') do for /f "tokens=2* delims=?" %%i in ("%%b") do @echo ren "%%i" "%%j" & set "%%a=" 
16.
		goto :files 
17.
	) else echo Ordner werden nach Tiefe sortiert! 
18.
) else echo Kein Ordner entspricht den Kriterien! 
19.
:testfzero 
20.
if %fNL% lss %folders% ( 
21.
	set "fNL=%fNL%9" 
22.
	set "vfN=%vfN%0" 
23.
	goto :testfZero 
24.
25.
set "fNL=9" 
26.
:testmzero 
27.
if %NL% lss %maxdeep% ( 
28.
	set "NL=%NL%9" 
29.
	set "vmn=%vmN%0" 
30.
	goto :testmZero 
31.
32.
::Verzeichnisse nach Tiefe sortieren und Vars setzen 
33.
for /f "tokens=1* delims==" %%a in ('set ... 2^>nul') do for /f "tokens=1* delims=?" %%i in ("%%b") do ( 
34.
	set /a bedeep=maxdeep-%%i 
35.
	set "vdn=%vmN%" 
36.
	set "NL=9" 
37.
	set "file=%%j" 
38.
	call :memfolds %%a 
39.
40.
:: verzeichnisse Umbenennen tiefstes zuerst 
41.
for /f "tokens=1* delims==" %%a in ('set .. 2^>nul') do for /f "tokens=1* delims=?" %%i in ("%%b") do @echo ren "%%i" "%%j" 
42.
:: dateien Umbenennen 
43.
:files 
44.
for /f "tokens=*" %%i in ('dir /a:-d /b /s 2^>nul') do set "file=%%~dpni" & set "ext=%%~xi" & set "all=%%i" & call :folderren 
45.
echo %folders% Ornder %files% Dateien entsprachen den Kriterien.&pause& goto :eof 
46.
:memfolds 
47.
if %NL% lss %bedeep% ( 
48.
	set "NL=%NL%9" 
49.
	set "vdn=%vdN:~1%" 
50.
	goto :memfolds 
51.
52.
set /a subfold+=1 
53.
set "..%vdN%%bedeep%%vfN%%subfold%=%file%" 
54.
if %fNL% equ %subfold% ( 
55.
	set "fNL=%fNL%9" 
56.
	set "vfN=%vfN:~1%" 
57.
58.
if defined %1 set "%1=" 
59.
goto :eof 
60.
:folderren 
61.
if not "%file:*\=%" == "%file%" ( 
62.
	set "file=%file:*\=%" 
63.
	if defined setdeep1 set /a deep+=1 
64.
	goto :folderren 
65.
66.
set "new= %file%" 
67.
:write 
68.
if "%~0"=="%all%" goto :eof 
69.
::UmlauteNormal 
70.
set "new=%new:ß=ss%" 
71.
set "new=%new:Ä=Ae%" 
72.
set "new=%new:Ö=Oe%" 
73.
set "new=%new:Ü=Ue%" 
74.
set "new=%new:ä=ae%" 
75.
set "new=%new:ö=oe%" 
76.
set "new=%new:ü=ue%" 
77.
::Umlautefalsch dargestellt Achtung! hier werden Umlaute am Wortanfang Gross 
78.
set "new=%new:á=ss%" 
79.
set "new=%new: Ž= Ae%" 
80.
set "new=%new: ™= Oe%" 
81.
set "new=%new: š= Ue%" 
82.
set "new=%new:„=ae%" 
83.
set "new=%new:”=oe%" 
84.
set "new=%new:=ue%" 
85.
set "new=%new:~1%" 
86.
::u-strich Klammer etc 
87.
set "new=%new: =_%" 
88.
set "new=%new:,=_%" 
89.
set "new=%new:(=%" 
90.
set "new=%new:)=%" 
91.
set "new=%new:.=%" 
92.
if "%file%"=="%new%" goto :eof 
93.
if not defined setdeep1 goto :ren 
94.
if not defined mindeep set "mindeep=%deep%" 
95.
if %deep% gtr %maxdeep% set "maxdeep=%deep%" 
96.
set /a folders+=1 
97.
set "...%folders%=%deep%?%foldername%?%new%" 
98.
goto :eof 
99.
 
100.
:ren 
101.
set /a files+=1 
102.
:: Achtung! 
103.
::wenn alles so klappt wie es soll dann entferne: @echo.&@echo   
104.
@echo.&@echo ren "%all%" "%new%%ext%" 
105.
::----schnapp---Unterordner-und-enthaltene-Dateien-Umbenamsen-fuer-CDVD.bat
Gruß Phil

[Edit Biber] 24.11.2009 Die weiter unten von Nostradamus2 wrwähnten Tippfehler berichtigt. [/Edit]
Bitte warten ..
Mitglied: 81825
03.09.2009 um 02:54 Uhr
Zitat von pieh-ejdsch:
@45877
warum setzt Du so ein tool hier in den Batchbereich?
es geht hier um ne Batch und nicht so ein Klicktool also bitte lenke nicht von den Anforderungen ab,
welche hier gestellt werden.

Nur mal zur Klarstellung: Solange ein Kommentar gegen keine Regel verstößt und ein Tipp verwendbar ist, darf hier immer noch jeder
schreiben, was er für richtig hält. Ob er das darf, hast du nicht zu entscheiden!
Bitte warten ..
Mitglied: 45877
03.09.2009 um 12:05 Uhr
ich weiss ja nicht wie das bei dir ist, aber mein Arbeitgeber zahlt mir Geld. Und bevor ich mich zwei Stunden hinsetze und Batch schreibe, wenn ich das ganze auch für nen 10er fertig haben kann, dann sagt er "kauf das Ding" und mach fertig.

Aber wenn er jemand fin det der es ihm für umsonst macht, dann ist das natürlich auch schön...
Bitte warten ..
Mitglied: pieh-ejdsch
03.09.2009 um 12:45 Uhr
Hi,
wenn ich das ganze auch für nen 10er fertig haben kann, dann sagt er "kauf das Ding" und mach fertig.
Ja da magst Du ja Recht haben.
ich habe aber bei den Filerenamer keinen Hinweis darauf bekommen ob dieser auch die Ordner Umbenennt.
daher habe ich es halt gemacht. und soll ich Dir noch sagen warum?
Mir macht es halt Spass und wenn der Batch dazu noch so funktioniert wie er soll, weiss man doch im Endeffekt wozu Batch alles in der Lage ist um Aufgaben zu erledigen.

Für mich sind 10 Euro auch geld!
Aber ich habe auch etwas mehr gelernt und die Anforderungen sind auch gewachsen.
Ich helfe immer gerne.

vllt könnte die Uberschrift vom Beitrag noch dementsprechend Umgeschrieben werden, wegen ersetzten von Zeichen in allen Unterordnern und enthaltenen Dateien.

Gruß Phil
Bitte warten ..
Mitglied: Nostradamus2
14.11.2009 um 01:43 Uhr
Hallo,

das Script kam mir sehr gelegen und man kann schön sehen, was wirklich passiert.
Vielen Dank!

Aber ich musste noch Kleinigkeiten korrigieren:
In den Zeilen
73. set "new=%new:Ü=Ue% 
87.set "new=%new: =_%  
88.set "new=%new:,=_%  
89.set "new=%new:(=%  
90.set "new=%new:)=%  
91.set "new=%new:.=% 
fehlt das " am Ende. Das ergibt unschöne zusätzliche Leerzeichen in den umbenannten Dateien/Ordnern.
(Ein Übertragungsfehler?)

Und wozu diese Zeile
85. set "new=%new:~1%"
gut ist, hat sich mir leider nicht erschlossen - funktioniert soweit ohne...

Das nur als Hinweis, damit zukünftige Benutzer nicht lange nach den Fehlern suchen müssen.

Gruß,
M

[Edit Biber] Codetags nachgetragen, sonst wird vieles als Smiley dargestellt. [/Edit]
Bitte warten ..
Mitglied: pieh-ejdsch
24.11.2009 um 12:54 Uhr
Hi Nostradamus,

das mit den abschliessenden Gänsefüschen werde ich noch fixen.

in Zeile 85. macht das set "new=%new:~1%"
das Leerzeichen, welches in Zeile 66. mit
set "new= %file%"
eingefügt wird um den Wortanfang groß zu schreiben. Das hatte den Hintergund, weil das ü ob groß oder klein immer so wie es zuerst umgeschrieben werden würde umgeschrieben worden ist. Daher hatte ich ein Leerzeichen vor den Ordnernamen gesetzt damit dieser Umlaut groß geschrieben wird. Danach wird eben dieses Leerzeichen wieder entfernt.

[Edit]

Hab grad mitbekommen, dass ich meinen alten Kommentar dahingehend nicht mehr bearbeiten kann.
vllt kann Biber die Gänsefüschen in den entsprechenden Zeilen anfügen.
[/Edit]

Gruß Phil
Bitte warten ..
Mitglied: 13232
24.11.2009 um 18:57 Uhr
Sehr schönes Batch, gibt da nur noch ein Problem - die Zeichen % sowie § werden nicht ersetzt, bei % ist mir klar warum nicht, beim § eher nicht. Kann man das % irgendwie Escapen?

So funktioniert es nicht: \% ;)



You're welcome.
Bitte warten ..
Mitglied: Biber
24.11.2009, aktualisiert 03.08.2012
Moin pieh- bzw. Raz0rs-ejdsch,

ich habe zwar keinen Grund gefunden, warum das Weg-Editieren der Tippfehlerchen in dem Schnipsel oben nicht funktionieren können sollte (gesperrt ist nix),
aber ich habe mal die von Nostradambruch gemeldeten Bugs berichtigt.

Mehr wollte ich da jetzt nicht eingreifen, weil... hmm, der Schnipsel oben wird sicherlich noch einige Verbesserungen/Erweiterungen bekommen im Praxiseinsatz, aber im Großen und Ganzen ist alles dabei, was vermutlich "überall" ersetzt bzw. übersetzt werden kann (mach mir ein X für ein U, mach mir ein "ue" für ein "ü"...)

Wenn jetzt noch (wie von Raz0rsEdge) Übersetzungen vermisst werden, dann doch schon eher spezielle und individuelle.
Okay, soll ja trotzdem passieren - ich wollte nur darauf hinaus, dass das hier gepostete Skript natürlich noch individuell erweitert werden kann/könnte, aber dass sicherlich auch pieh-ejdsch dankbar dafür wäre, wenn Ergänzungen/Erweiterungen hier gepostet werden und nicht "Upps, einer fehlt noch!"-Hinweise.

[[[ Mir beispielweise fehlt noch ein sauberer Abgang des Skripts (auch im Falle "Nix zu tun"), nämlich das Zurücksetzen des aktuellen Laufwerks/Pfads mit PopD.
Gesichert und gewechselt wird ja am Anfang mit PushD in das durchzunudelnde Verzeichnis, aber nie wieder zurückgesprungen ]]]

@13232
Zu deinen Fragen:
  • das "§" wird nicht ersetzt, weil es ähnlich wie "#" , "@" oder "[" zwar zu den eher ausgefallenen Zeichen gehört, aber eigentlich nie bei der Verarbeitung als Datei/Ordnername auffällig wird. Gib eine Ersetzungsregel an dafür und gut is'
  • Wenn das %-Zeichen ersetzt werden soll, wird es wirklich etwas tricky.
Normalerweise werden "Sonderzeichen" (==Zeichen, die im Batch-Sprachschatz-Sonderbedeutung haben) mit einem Caret ("^") maskiert.
So wie in anderen Sprachen mit einem "\"-Backslash maskiert oder aber das Zeichen verdoppelt wird.

Zwei unsauber gelöste Grenzfälle sind das Anführungszeichen und das Prozentzeichen, die sich beide etwas gewöhnungsbedürftig verhalten bei Ersetzunganweisungen von Variableninhalten und auch als Optionen in FOR-Anweisungen.

ich empfehle, ein Prozentzeichen in einer Variablen zu ersetzen durch (kurzzeitige) Verwendung der "Setlocal EnableDelayed"-Anweisung.

Beispiel am CMD-Prompt
01.
set "DeutscherMeister2010=100% Werder" 
02.
REM Variableninhalt mit "%" 
03.
 
04.
REM Verdoppeln des %-Zeichens und Maskieren mit Caret hilft nix beim Ersetzen: 
05.
 
06.
>echo [%DeutscherMeister2010%] [%DeutscherMeister2010:%=_%] 
07.
[100% Werder] [%DeutscherMeister2010:%=_%] 
08.
 
09.
>echo [%DeutscherMeister2010%] [%DeutscherMeister2010:^%=_%] 
10.
[100% Werder] [100% Werder] 
11.
(=20:03:55  D:\temp=) 
12.
>Setlocal enableDelayedExpansion & echo [%DeutscherMeister2010%] [!DeutscherMeister2010:%=_!] 
13.
[100% Werder] [100_ Werder]         -----------> das Ersetzen hier klappt! 
14.
 
Grüße
Biber
Bitte warten ..
Mitglied: 13232
24.11.2009 um 21:49 Uhr
Hiho Biber,


danke für den Tipp mit dem %-Zeichen, bei uns ist es leider so dass User auch gerne mal Dateien §7_GG_Auszug.pdf abspeichern daher habe ich einfach eine Ersatzregel für das §-Zeichen implementieren wollen, die Umsetzung scheiterte - sonst hätt ich mich ja nicht gemeldet.


Werd mal ein wenig rumexperimentieren mit dem maskieren.





  1. raz0r
Bitte warten ..
Mitglied: Biber
24.11.2009 um 21:55 Uhr
Moin Ratzer,

das Paragraphzeichen sollte keinerlei Problem machen im Filesystem (ist m.W. kein Sonderzeichen auch auf CDs) und auch keine Probleme beim 08/15-Ersetzen im Batch:

Proof of concept am CMD-Prompt (">" nicht mit eingeben)
(=21:51:29  D:\temp=) 
>set "datei=§7_GG_Auszug.pdf" 
 
(=21:51:40  D:\temp=) 
>echo alt[%datei%] neu[%datei:§=_%] 
alt[§7_GG_Auszug.pdf] neu[_7_GG_Auszug.pdf]
Grüße
Biber
Bitte warten ..
Mitglied: pieh-ejdsch
29.11.2009 um 22:53 Uhr
Hi Biber,

das mit dem Bearbeiten des Kommentares funktioniert scheinbar nur noch beim jeweils letzten Kommentar bzw. wenn dieser noch net zu alt ist. KA warum aber der Bearbeiten Link fehlt in diesen Komments.

sorry, der Saubere Abgang mit PopD in Zeile 45. ist mir leider durch die Lappen gegangen

[OT]
derzeit kein DSL (1+1 die brauchen wieder mal ewig...) daher magere Antworten
[/OT]

Gruß Phil
Bitte warten ..
Mitglied: derfnam
16.12.2010 um 08:12 Uhr
Hallo und guten Morgen,
auf der Suche nach einem Programm oder Script, welches Umlaute in Ordner, Unterordner und Dateien ersetzt, bin ich hier angekommen. Das Umbenennen der Dateien funktioniert super, vielen Dank. Leider klappt es nciht bei den Ordnern. Ich bekomme zwar die Ausgabe: x Ordner entsprechen den Kriterien, aber sie werden leider nciht umbenannt.
Wäre sehr nett wenn mir jemand, der sich auskennt helfen würde.
Im Voraus besten Dank

Gruß Manfred
Bitte warten ..
Mitglied: pieh-ejdsch
16.12.2010 um 22:39 Uhr
moin Manfred,
die Ausgabe: x Ordner entsprechen den Kriterien, aber sie werden leider nciht umbenannt.

in Zeile 41 ist
 @echo
zu entfernen

Gruß Phil
Bitte warten ..
Mitglied: derfnam
17.12.2010 um 17:53 Uhr
Vielen Dank für die schnelle Antwort.
In Zeile 15 habe ich auch ein @echo gefunden. Wofür ist das gut?

Gruß Manfred
Bitte warten ..
Mitglied: pieh-ejdsch
17.12.2010, aktualisiert 03.08.2012
moin Manfred,

in Zeile 15 ...
ähm ja - das ist für die Ordnerumbenennung wenn keine Unterordner zum Umbenennen vorhanden sind . Ich schrub ja, dass erst der Tiefste umzubenennende Ordner umbenannt werden muss - sonst wird er innerhalb dieser Schleife nicht mehr gefunden. Daher diese Extra-Schleife - die hatte ich gar net geübersehen - zulange her...

ich habs nochmal ein bissel verfeinert mit Hilfe "/?" "/a" für Aktion und ein paar andere Optionen dazu

01.
::----schnipp---Unterordner-und-enthaltene-Dateien-Umbenamsen-fuer-CDVD.bat 
02.
@echo off & setlocal 
03.
:: Nicht erlaubt in Datei- und Verzeichnissnamen sind 
04.
:: \ / : * ? " < > | 
05.
 
06.
set "Batch=%~0" 
07.
set "Anzeigen=@echo" 
08.
set "LZ=@echo.&" 
09.
set "s=/s" 
10.
if "%~1" == "/?" ( 
11.
echo.&echo zeigt Verzeichnisse und UnterVerzeichnisse sowie deren Dateien mit: 
12.
echo Umlauten, Leerzeichen, Klammern, Kommata und Punkten an. 
13.
echo danach wird jeweils das Ergebnis der Umbenennung angezeigt. 
14.
echo.& echo Syntax: 
15.
echo %~n0 [Pfad\Ordnername] [/a] [/-s] [/d ^| /-d] [/u ^| /-u] 
16.
echo Wird der Parameter /a     angebeben wird gleich umbenannt 
17.
echo mit Parameter      /-s    wird NICHT Rekursiv abgearbeitet 
18.
echo mit Parameter      /d     werden nur Ordner abgearbeitet 
19.
echo mit Parameter      /-d    werden nur Dateien abgearbeitet 
20.
echo mit Parameter      /u     werden die Umlaute NICHT einbezogen 
21.
echo mit Parameter     /-u     werden die Sonderzeichen Nicht einbezogen 
22.
goto :eof 
23.
24.
if not "%~1"=="" ( 
25.
	for %%i in ( "%~1" "%~2" "%~3" "%~4" "%~5") do if not "%%~i" == "" (set "Opt=%%~i" 
26.
		setlocal enabledelayedexpansion 
27.
		if "!Opt:~0,1!" == "/" (endlocal 
28.
			if "%%~i" == "/a" (set "Anzeigen="&set "LZ=")  
29.
			if "%%~i" == "/-s" set "s=" 
30.
			if "%%~i" == "/d" if not defined f set "d=1" 
31.
			if "%%~i" == "/-d" if not defined d set "f=1" 
32.
			if "%%~i" == "/u" if not defined so set "u=1" 
33.
			if "%%~i" == "/-u" if not defined u set "so=1" 
34.
		) else (endlocal 
35.
			if exist "%%~i\" set "pfad=%%~i" 
36.
)	)	) 
37.
if not defined Pfad set "pfad=%cd%" 
38.
PushD "%pfad%" 
39.
set /a deep=0 , maxdeep=0 , mindeep=0 , subfold=0 , folders=0 , files=0 & set vfN=& set vmn=& set vdn=& set fNL=9& set "NL=9"  
40.
::Max Verzeichnistiefe festellen 
41.
if defined f goto :files  
42.
set setdeep1=1 
43.
for /f "tokens=*" %%i in ('dir /a:d /b %s% 2^>nul') do set "file=%%i" & set "foldername=%%i" & set deep=0& call :folderren 
44.
set "setdeep1=" 
45.
if %folders% gtr 0 ( 
46.
	echo %folders% Ornder entsprechen den Kriterien! 
47.
	if %mindeep% equ %maxdeep% ( 
48.
		for /f "tokens=1* delims==" %%a in ('set ... 2^>nul') do for /f "tokens=2* delims=?" %%i in ("%%b") do %Anzeigen% ren "%%i" "%%j" & set "%%a=" 
49.
		goto :files 
50.
	) else echo Ordner werden nach Tiefe sortiert!&echo. 
51.
) else echo Kein Ordner entspricht den Kriterien!&echo. 
52.
:testfzero 
53.
if %fNL% lss %folders% ( 
54.
	set "fNL=%fNL%9" 
55.
	set "vfN=%vfN%0" 
56.
	goto :testfZero 
57.
58.
set "fNL=9" 
59.
:testmzero 
60.
if %NL% lss %maxdeep% ( 
61.
	set "NL=%NL%9" 
62.
	set "vmn=%vmN%0" 
63.
	goto :testmZero 
64.
65.
::Verzeichnisse nach Tiefe sortieren und Vars setzen 
66.
for /f "tokens=1* delims==" %%a in ('set ... 2^>nul') do for /f "tokens=1* delims=?" %%i in ("%%b") do ( 
67.
	set /a bedeep=maxdeep-%%i 
68.
	set "vdn=%vmN%" 
69.
	set "NL=9" 
70.
	set "file=%%j" 
71.
	call :memfolds %%a 
72.
73.
:: verzeichnisse Umbenennen tiefstes zuerst 
74.
for /f "tokens=1* delims==" %%a in ('set .. 2^>nul') do for /f "tokens=1* delims=?" %%i in ("%%b") do %Anzeigen% ren "%%i" "%%j" 
75.
:: dateien Umbenennen 
76.
:files 
77.
if not defined d (for /f "tokens=*" %%i in ('dir /a:-d /b %s% 2^>nul') do set "file=%%~dpni" & set "ext=%%~xi" & set "all=%%i" & call :folderren 
78.
) else set "files=" 
79.
if not defined d  set "files=%files% Dateien " 
80.
if defined f (set "folders=") else set "folders=%folders% Ornder " 
81.
echo %folders%%files% entsprachen den Kriterien.&pause&popD& goto :eof 
82.
:memfolds 
83.
if %NL% lss %bedeep% ( 
84.
	set "NL=%NL%9" 
85.
	set "vdn=%vdN:~1%" 
86.
	goto :memfolds 
87.
88.
set /a subfold+=1 
89.
set "..%vdN%%bedeep%%vfN%%subfold%=%file%" 
90.
if %fNL% equ %subfold% ( 
91.
	set "fNL=%fNL%9" 
92.
	set "vfN=%vfN:~1%" 
93.
94.
if defined %1 set "%1=" 
95.
goto :eof 
96.
:folderren 
97.
if not "%file:*\=%" == "%file%" ( 
98.
	set "file=%file:*\=%" 
99.
	if defined setdeep1 set /a deep+=1 
100.
	goto :folderren 
101.
102.
set "new=%file%" 
103.
:write 
104.
if "%Batch%"=="%all%" goto :eof 
105.
::UmlauteNormal 
106.
if defined u goto :u 
107.
set "new=%new:ß=ss%" 
108.
set "new=%new:Ä=Ae%" 
109.
set "new=%new:Ö=Oe%" 
110.
set "new=%new:Ü=Ue%" 
111.
set "new=%new:ä=ae%" 
112.
set "new=%new:ö=oe%" 
113.
set "new=%new:ü=ue%" 
114.
::Umlautefalsch dargestellt 
115.
set "new=%new:á=ss%" 
116.
set "new=%new:Ž=Ae%" 
117.
set "new=%new:™=Oe%" 
118.
set "new=%new:š=Ue%" 
119.
set "new=%new:„=ae%" 
120.
set "new=%new:”=oe%" 
121.
set "new=%new:=ue%" 
122.
::SonderZeichen u-strich Klammer etc 
123.
:u 
124.
if defined so goto :so 
125.
 
126.
set "new=%new: =_%" & ::Leerzeichen 
127.
 
128.
set "new=%new:,=_%" 
129.
 
130.
set "new=%new:.=_%" 
131.
 
132.
set "new=%new:;=_%" 
133.
 
134.
set "new=%new:!=_%" 
135.
 
136.
set "new=%new:'=_%" 
137.
 
138.
set "new=%new:(=_%" 
139.
 
140.
set "new=%new:)=_%" 
141.
 
142.
set "new=%new:[=_%" 
143.
 
144.
set "new=%new:]=_%" 
145.
 
146.
set "new=%new:{=_%" 
147.
 
148.
set "new=%new:}=_%" 
149.
 
150.
set "new=%new:#=_%" 
151.
 
152.
set "new=%new:õ=_%" & ::Paragraphenzeichen 
153.
 
154.
set "new=%new:$=_%" 
155.
 
156.
setlocal enabledelayedexpansion 
157.
 
158.
set "new=!new:%%=_!" & ::Prozentzeichen 
159.
 
160.
endlocal&set "new=%new%" 
161.
 
162.
set "new=%new:&=_%" 
163.
 
164.
:so 
165.
if "%file%"=="%new%" goto :eof 
166.
if not defined setdeep1 goto :ren 
167.
if not defined mindeep set "mindeep=%deep%" 
168.
if %deep% gtr %maxdeep% set "maxdeep=%deep%" 
169.
set /a folders+=1 
170.
set "...%folders%=%deep%?%foldername%?%new%" 
171.
goto :eof 
172.
 
173.
:ren 
174.
set /a files+=1 
175.
%LZ%%Anzeigen% ren "%all%" "%new%%ext%" 
176.
::----schnapp---Unterordner-und-enthaltene-Dateien-Umbenamsen-fuer-CDVD.bat
Gruß Phil
Bitte warten ..
Mitglied: derfnam
18.12.2010 um 07:15 Uhr
Hallo Phil,
ok, ich werd mir das die nächsten Tage mal genauer ansehen. Vielen Dank vorerst mal und ich melde mich wieder.

Gruß Manfred
Bitte warten ..
Mitglied: derfnam
02.02.2011 um 12:14 Uhr
Hi Phil,
aus den paar Tagen sind ein paar Wochen gewiorden, aber endlich bin ich mal dazu gekommen ein wenig rum zu experimentieren. Das Ganze funktioniert super. Leider verstehe ich nicht alles. Genauso habe ich mir es vorgestellt.
Vielen Dank.

Grüße Manfred
Bitte warten ..
Mitglied: pieh-ejdsch
02.02.2011 um 13:43 Uhr
moin Manfred,

naja manche Treads müssen auch später "Wiederbelebt" werden.

ich hab schon eine andere Version in Arbeit (z.Zt. aber arbeite ich nicht daran)
Hier ist Schon mal die Hilfe davon
zeigt Verzeichnisse und UnterVerzeichnisse sowie deren Dateien mit: 
Umlauten, Leerzeichen, Klammern, Kommata, Punkten, SonderZeichen etc an. 
danach wird jeweils das Ergebnis der Umbenennung angezeigt. 
 
Syntax: 
RENUnterordnerundUFiles2BurnCDVD [/a] [/-s] [/d | /-d] [/u | /-u] 
  [Laufwerk:][Pfad][Ordnername] 
  [/zZeichen(Satz)[:ErsetzungsZeichen(Satz)] ...] 
  [/cZeichenfolge[:ErsetzungsZeichenfolge] ...] 
  [/tErweitert] [/nName] [/r] 
 
  Parameter   Bedeutung 
 
   /a         Es wird ohne Anzuzeigen Umbenannt 
   /-s        Es wird NICHT Rekursiv abgearbeitet 
   /d         Ordnernamen werden nur abgearbeitet 
   /-d        Dateienamen werden nur abgearbeitet 
   /u         Umlaute werden NICHT einbezogen 
   /e         Sonderzeichen werden Nicht einbezogen 
 
   /zZeichen(satz):ErsetzungsZeichen(Satz) 
              Zeichen(satz) wird einzeln Nacheinander mit 
               ErsetzungsZeichen oder 
               ErsetzungsZeichen(Satz) einzeln Nacheinander bis zum letzten 
               Zeichen welches für den Rest aus Zeichen(satz) verwendet wird, 
               ersetzt. 
               OHNE Ersetzungszeichen wird gelöscht 
 
      :         Trennzeichen zwischen zu Ersetztendem und Ersetzung 
      /         ErsetzungsZeichen nur in Option /z 
                der Schrägstrich ist ein Platzhalter für zu Löschende Zeichen. 
Beispiele:     /z" .,;():_/" ersetzt Leerzeichen mit Unterstrich 
                            loescht . , ; ( ) 
 
               /z";~ /_"         loescht Semikolon und Tilde 
                            ersetz Leerzeichen %  ( ) mit Unterstrich 
 
   /cZeichen(folge):ErsetzungsZeichen(folge) 
              Zeichen(folge) wird mit Ersetzungszeichen(folge) ersetzt 
      *        Mit Stern am Anfang wird alles vor inklusive dieser 
               Zeichen(folge) Ersetzt. 
               OHNE Ersetzungszeichen wird gelöscht. 
 
      :         Trennzeichen zwischen zu Ersetztendem und Ersetzung 
Die Zeichen = und ~ bei Option /c und /z werden auch ersetzt. 
 
   /tErweitert 
              Erweiterte Stringzerlegung wie im Befehl SET für OffSet. 
Beispiele:     /t"~0,5"        belässt die ersten 5 Zeichen 
               /t"~0,4 ~6"   löscht das 5. Zeichen 
   /nName     Einzuschliesende(r) Datei-/Ordnername(n) 
 
   /r         Rangfolge der Ersetzungsparameter beibehalten.
Die Optionen /t /n und /r sind noch nicht Völlständig integriert und eine NamensÜberprüfung welche beim Umschreiben wenn schon Vorhanden (auser das Umzuschreibende selbst) mit einem Zähler versieht - ist noch nicht Fertiggestellt.
der Rest läuft aber.
Das Ganze funktioniert super.
soll es ja auch.

Gruß Phil
Bitte warten ..
Mitglied: FunkyFresh
29.04.2011 um 20:42 Uhr
... hat sich erledigt. Habe ein script gefunden was bei mir funktioniert.
Bitte warten ..
Mitglied: e-horn
16.01.2012 um 18:33 Uhr
Hallo, das Thema ist zwar nun schon 2-3 Wochen alt aber das Script wäre genau das was ich suche. Leider geht es iwie bei mir nicht. Habe einen Ordner mit Unterordner und in dem befinden sich Datein. Das Script meldet "1 Ordner entsprechen den Kriterien" und dann kommt ne ganze Reihe mit "Das System kann den angegebenen Pfad nicht finden"
Umbennen tut er aber nix (Habe testweise in beide Ordner und die Datein mal ein Sonderzeichen eingefügt.
Die echos hab ich entfernt ;)

€dit
ok hab erstens ein paar fehlende " bei PushD "%pfad%" ersetzt und außerdem festgestellt das das Umbenennen erst beim nächst tieferen Ordner beginnt. Also wenn ich die Struktur "Nöer Ordner\testä\" und "Nöer Ordner" in die batch ziehe benennt der nur testä->testae um....

gruß e-horn
Bitte warten ..
Mitglied: Biber
16.01.2012 um 20:19 Uhr
[OT] Moin e-horn,

willkommen im Forum und in diesem Zweigarm der Galaxie
Zitat von e-horn:
Hallo, das Thema ist zwar nun schon 2-3 Wochen alt ...
Nur interessehalber - wie viele Erd-Jahre dauert denn auf eurem Planeten eine Runde um das Zentralgestirn?

Umbennen tut er aber nix
Witzig, der Dialekt bei euch ist sehr ähnlich dem hier so beliebten....

Nimm als Zeichen der Freundschaft unserer Planeten diese Botschaft mit zurück:
Set /a rgc+=1  
#789
Und sag zuhause
Biber hassen Montage
[/OT]
Bitte warten ..
Mitglied: e-horn
16.01.2012 um 20:44 Uhr
Hallo Biber, hab schon viel gelesen von dir. Kommt man ja nicht dran vorbei wenn man sich hier über batch schlau macht :D
Zu welchem Code gehört das denn? Also muss sagen hab das erste script von pieh-ejdsch jetz zum laufen gebracht, hab noch ein "chcp 1252" eingefügt und dann ging das auch mit den Sonderzeichen ordentlich.
Muss mich eben nur dran gewöhnen das er nur die Unterordner des übergebenen Ordners anpasst

danke dir
gruß e-horn
Bitte warten ..
Mitglied: Biber
17.01.2012 um 13:56 Uhr
Moin e-horn,

freut mich, dass du es zum Fliegen gebracht hast.

Zur Frage
Zu welchem Code gehört das denn?
-> Details zum running gag counter rgc stehen in unseren FAQ

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...