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

Mit VB Script Sonderzeichen in Datei und Ordnernamen umbenennen

Frage Entwicklung VB for Applications

Mitglied: SirMcFrosty

SirMcFrosty (Level 1) - Jetzt verbinden

19.02.2015 um 18:34 Uhr, 675 Aufrufe, 2 Kommentare

Folgendes Szenario:

Einige Datei und/oder Ordnernamen besitzen Sonderzeichen(-kombinationen) die nun geändert/umbenannt werden müssen

Beispiel:

Aus ""Geschäftsüberlassung" soll wieder "Geschäftsüberlassung" werden

Bastla schrieb 2007 dazu ein wunderbares VB script. Hierzu wäre eine kleine Erweiterung echt super. Und zwar das das script nun sowohl Datei als auch Ordnernamen umbenennt und dieses auch für alle Unterordner (und den darin befindlichen Dateien) des übergebenen Startordners.

Das Problem könnte sich wohl mit einer FOR /D /r schleife regeln lassen aber ich scheitere mangels Fachwissen an der Umsetzung.

Wäre super wenn mir da jemand helfen könnte und das script (siehe unten) anpasst.

01.
'RenameSpecial.vbs 
02.
Const sProtokoll = "C:\skript" 
03.
Const sSonder = "C:\skript\SonderzeichenErsetzung.txt" 
04.
 
05.
If WScript.Arguments.Count = 0 Then 
06.
	WScript.Echo "Ordner mit umzubenennenden Dateien als Parameter uebergeben!" 
07.
	WScript.Quit(1) 
08.
End If 
09.
Set fso = CreateObject("Scripting.FileSystemObject") 
10.
sFolder = WScript.Arguments(0) 
11.
If Not fso.FolderExists(sFolder) Then 
12.
	WScript.Echo sFolder & " ist keine gueltige Ordnerangabe!" 
13.
	WScript.Quit(1) 
14.
End If 
15.
 
16.
If Not fso.FileExists(sSonder) Then 
17.
	WScript.Echo "Sonderzeichendaten " & sSonder & " nicht gefunden." 
18.
	WScript.Quit(1) 
19.
End If 
20.
Set oSonder = fso.OpenTextFile(sSonder, 1) 
21.
If Not oSonder.AtEndOfStream Then  
22.
	aSonder = Split(oSonder.ReadAll, vbCrLF) 
23.
Else 
24.
	oSonder.Close 
25.
	WScript.Echo "Sonderzeichendatei " & sSonder & " enthält keine Daten!" 
26.
	WScript.Quit(1) 
27.
End If 
28.
oSonder.Close 
29.
 
30.
If Right(LCase(WScript.FullName), 11) = "cscript.exe" Then 
31.
	bConsole = True 
32.
Else 
33.
	bConsole = False 
34.
End If 
35.
 
36.
Set oProtokoll = fso.OpenTextFile(sProtokoll & "\" & Replace(Replace(sFolder, ":", ""), "\", "_") & "-Doppelt.txt", 2, True) 
37.
 
38.
Set oFolder = fso.GetFolder(sFolder) 
39.
For Each oFile In oFolder.Files 
40.
	sNameOld = Left(oFile.Name, InStrRev(oFile.Name, ".") - 1) 
41.
	sType = Mid(oFile.Name, InStrRev(oFile.Name, ".")) 
42.
	 
43.
	If bConsole Then WScript.Echo "Bearbeite: " & oFile.Name 
44.
	 
45.
	sNameNew = ReplaceSpecialChars(sNameOld) 
46.
	If Not fso.FileExists(oFile.ParentFolder & "\" & sNameNew & sType) Then 
47.
		oFile.Name = sNameNew & sType 
48.
	Else 
49.
		If sNameOld <> sNameNew Then oProtokoll.WriteLine oFile.Name 
50.
	End If 
51.
Next 
52.
oProtokoll.Close 
53.
 
54.
Function ReplaceSpecialChars(sOld) 
55.
sTemp = sOld 
56.
For Each sLine In aSonder 
57.
	aChars = Split(sLine, ",") 
58.
	For i = 1 To UBound(aChars) 
59.
		sTemp = Replace(sTemp, aChars(i), aChars(0)) 
60.
	Next 
61.
Next 
62.
ReplaceSpecialChars = sTemp 
63.
End Function
Benötigt wird dazu die Datei "SonderzeichenErsetzung.txt" (siehe Zeile "Const sSonder = ...") mit folgendem Inhalt:

01.
A,Á,%C1,Á,À,%C0,À,Â,%C2,Â,Ã,%C3,à
02.
a,á,%E1,á,à,%E0,à,â,%E2,â,ã,%E3,ã 
03.
Ae,Ä,%C4,Ä 
04.
ae,ä,%E4,ä 
05.
C,Ç,%C7,Ç 
06.
c,ç,%E7,ç 
07.
E,É,%C9,É,È,%C8,È,Ê,%CA,Ê 
08.
e,é,%E9,é,è,%E8,è,ê,%EA,ê 
09.
I,Í,%CD,Í,Ì,%CC,Ì 
10.
i,í,%ED,í,ì,%EC,ì 
11.
O,Õ,%D5,Õ,Ô,%D4,ÔÓ,%D3,Ó 
12.
o,õ,%F5,õ,ô,%F4,ôó,%F3,ó 
13.
Oe,Ö,%D6,Ö 
14.
oe,ö,%F6,ö 
15.
U,Ú,%DA,Ú 
16.
u,ú,%FA,ú 
17.
Ue,Ü,%DC,Ü 
18.
ue,ü,%FC,ü
Am Beginn jeder Zeile steht der Ersatztext, dahinter (durch Kommata getrennt) die zu ersetzenden Zeichen(-folgen).

Das Script erwartet die Übergabe des zu bearbeitenden Ordners und erstellt für jene Dateien, welche (wegen daraus resultierender Namensgleichheit mit bereits vorhandenen Dateien) nicht umbenannt werden können, im in der ersten "Const"-Zeile festgelegten Ordner eine Protokolldatei (Benennung mit dem Pfad des Ordners, wobei ":" entfernt und "\" durch "_" ersetzt wird - also würde für den Ordner "D:\Daten\Test" die Protokolldatei "D_Daten_Test-Doppelt.txt" heißen).

Wenn Du das Script von der Kommandozeile ausführst (zB mit
01.
cscript //nologo C:\skript\RenameSpecial.vbs "D:\Daten\Test"
wird im CMD-Fenster die jeweils bearbeitete Datei angezeigt (weswegen ich diese Startart empfehlen würde), startetst Du per Drag&Drop (des Ordners auf die Scriptdatei) kann diese Anzeige nicht (sinnvoll) erfolgen.

(Code by Bastla)
Mitglied: bastla
19.02.2015 um 19:27 Uhr
Hallo SirMcFrosty!

Nur mal auf die Schnelle: Das "for /d /r" wäre für den Aufruf des Scripts in CMD einzusetzen - damit könnten zumindest schon mal alle Dateien im Startordner und unterhalb bearbeitet werden; ungetestet etwa so:
for /d /r "D:\Daten\Test" %i in (*) do cscript //nologo C:\skript\RenameSpecial.vbs "%i"
Grüße
bastla
Bitte warten ..
Mitglied: SirMcFrosty
19.02.2015 um 23:43 Uhr
Danke bastla schonmal vorab. Dein Tip war schon mal ein Anfang.

Mit dem Aufruf des scripts durch deine FOR Schleife benennt es zwar Dateien aus den Unterordnern um aber nicht die im Startordner. Eine Umbenennung der Ordnernamen selbst findet natürlich script bedingt nicht statt.

Wäre super wenn jemand das ganze im script selbst noch vollständig umsetzen könnte (das schöne ist es lässt sich ja für recht viele diverse Umbennenungsprobleme nutzen dann)
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

Batch & Shell
gelöst Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen (3)

Frage von Booster07 zum Thema Batch & Shell ...

VB for Applications
gelöst VB Script rekursiv statt nur ein Ordner (4)

Frage von Saschaaaaa zum Thema VB for Applications ...

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 ...