Leerzeichen im Ordnernamen setzen (.bat / RegEx)

Angerfist7612

Banned
Registriert
Juni 2008
Beiträge
194
Hallo,

habe Ordner die so gegliedert sind

abc4961
abc4642
abc4623
def8012
def8190
def7182

Die Namenlänge und Zahlenlänge ist immer unterschiedlich

Resultat soll sein

abc 4961
abc 4642
abc 4623
def 8012
def 8190
def 7182

Wie stelle ich das nun an?
 
Dazu musst du WSH, Powershell, Python oder ne andere Skriptsprache nutzen. Mit Batchdateien geht das nicht.
 
Ich würde versuchen, das erste Vorkommen einer Ziffer zu ermitteln.
In der Programmierung gibts da z.b. instr oder substring.
Ob es sowas in batch gibt, weiß ich nicht, aber mit diesen for-Schleifen geht das sicherlich auch.

Hat man erstmal die Stelle zum Trennen des Strings, sollte es nicht so schwer sein, diesen mit einem Leerzeichen dazwischen wieder zusammen zu setzen.
 
Man lernt es, wenn man es selbst probiert. Und man muss auch nicht immer Ahnung von allem haben.
Ich verstehe die for-Schleifen in Batch auch nicht und trotzdem hab ich mal sowas benutzt um einen Registry-Wert auszulesen.

Versuchs mal mit AutoHotKey, vielleicht kommst du damit schneller zum Ziel.
Die Community da ist auch ziemlich groß und man findet meistens, was man sucht (allerdings englisch).
 
sTuPiD-eLcH schrieb:
Ich würde versuchen, das erste Vorkommen einer Ziffer zu ermitteln.
In der Programmierung gibts da z.b. instr oder substring.
Ob es sowas in batch gibt, weiß ich nicht, aber mit diesen for-Schleifen geht das sicherlich auch.
Mit einer Batch-Datei kann man findstr nutzen. Allerdings benötigt man das hier nicht:

Code:
@echo off
setlocal enabledelayedexpansion
for /F "delims=" %%a in ('dir /ad /b') do (
	set dirName=%%a
	for /F "delims=0123456789" %%b in ("!dirName!") do (
		set dirFirst=%%b
		FOR %%c in ("!dirFirst!") do set "dirLast=!dirName:%%~c=!"
		echo Alter Name = !dirName!
		echo Neuer Name = !dirFirst! !dirLast!
	)
)
Ich bestimme 2 Teilstrings, erst den Verzeichnisnamen ohne Ziffern, dann den Rest des Verzeichnisnamens. Im Beispiel fehlt nur das Umbenennen des Verzeichnisses.
 
Zuletzt bearbeitet:
Mein Vorschlag ist ähnlich, nur ein paar Variablen mehr, zum Verständnis.

Code:
@echo off & setlocal enabledelayedexpansion
set "OldFolder="
set "NewFolder="
set "MainFolder=Startfolder"
cd %MainFolder%
for /d %%a in (*) do (
	set "OldFolder=%%~a"
	echo Processing "%MainFolder%\!OldFolder!"
	for /f "tokens=1 delims=0123456789" %%b in ("%%~a") do set "NamePart=%%~b"
	echo The name part is "!NamePart!"
	call set "NumberPart=%%OldFolder:!NamePart!=%%"
	echo The number part is "!NumberPart!"
	set "NewFolder=!NamePart! !NumberPart!"
	echo Rename "%MainFolder%\!OldFolder!" to "%MainFolder%\!NewFolder!"
	Rename "!OldFolder!" "!NewFolder!" && (
		echo Renaming o.k.^^!
	) || (
		echo Renaming Error^^! Abort^^! & goto:eof
	)
		
	echo ---------------------------------------------------------------
)
 
Zuletzt bearbeitet: ("!" muss in bei verzögerter Erweiterung escaped werden.)
Zurück
Oben