dalmatino87
Goto Top

VBS oder Batch um Teile von Ordnernamen umzubenennen

Hallo, ich bin neu als User in Forum. Nutze eure Threads aber schon länger. Immer mit positiver Erfahrung.

Ich bin Netzwerker und habe daher weniger Erfahrung mit Batchprogrammierung.

Ich habe hier eine Umfangreiche Ordnerstruktur, in der die Namen geändert bzw. gekürzt werden sollen.

Zb. von Abteilung1 zu Abt1

Ich suche ein Batch Skript, welches ich vom Root-Ordner Starten kann und der Benutzer wird dazu aufgefordert
den zu ändernden Teil des Namens eines Ordners einzugeben. HIER: Abteilung
Im Anschluss soll er den neuen Namen eingeben. HIER: Abt

Das Skript soll dann die Ordnerstruktur durchsuchen und alle Ordner, die die Eingabe im Namen beinhalten durch die neue Angabe ersetzen.

Ich bedanke mich schonmal im vorraus für eure Hilfe!

Content-Key: 202942

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

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: colinardo
colinardo 23.05.2013 aktualisiert um 16:51:25 Uhr
Goto Top
Hallo dalmatino87,
dein Beitrag ist wohl schon etwas älter und ich weiß nicht ob du es noch benötigst,trotzdem für alle die den Beitrag lesen und eine Antwort brauchen, hier ein Script das es in VBS löst.
Normalerweise tuts für solche Aufgaben eine Rename-Software wie z.B. (http://www.publicspace.net/windows/BetterFileRename/).
Und sorry das man dich und deinen Beitrag hier vergessen hat ... kommt normalerweise sehr selten vor.

strtoChange = InputBox("Bitte geben sie den zu ändernden Teil eines Ordners ein:")  
strNewPart = InputBox("Bitte geben sie den Replace-String ein:")  
Set fso = WScript.CreateObject("Scripting.Filesystemobject")  
Set rootFolder = fso.GetFolder(Left(WScript.ScriptFullName,InStrRev(WScript.ScriptFullName,"\")-1))  
If Not strtoChange = "" Then  
	parseFolders rootFolder,True
Else
	MsgBox "Sie haben einen leeren Suchstring eingeben!",vbCritical  
	WScript.Quit 1
End If
MsgBox "Verarbeitung abgeschlossen!",vbInformation  

Function parseFolders(strFldr,boolRecursion)
	For each folder in strFldr.Subfolders
		If InStr(folder,strtoChange) > 0 Then
			folder.Name = Replace(folder.Name,strtoChange,strNewPart)
		End If
	Next
	
	If boolRecursion Then
		For Each subFolder in strFldr.SubFolders
			parseFolders subFolder, True
		Next
	End If
End Function
Das Script in den Root-Ordner kopieren und starten, für die entsprechenden Abfragen erscheinen dann Dialogfelder.

Sollte deine Frage damit geklärt sein bitte den Beitrag als gelöst markieren... Danke

Grüße Uwe
Mitglied: dalmatino87
dalmatino87 30.09.2013 um 18:34:34 Uhr
Goto Top
Danke colinardo für deine Antwort und sorry für mein spätes Feedback.

Ich habe das problem leider nicht mit einer Batch, sondern mit einer Software lösen müssen. Genau das wollte ich zwar nicht, jedoch hatte ich keine Zeit.

Ich hoffe dein Skript hilft noch anderen mit dem selben Problem!