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
GELÖST

Mit VB Script Sonderzeichen entfernen.

Frage Entwicklung VB for Applications

Mitglied: Fraenky

Fraenky (Level 1) - Jetzt verbinden

09.11.2007, aktualisiert 10.11.2007, 13257 Aufrufe, 3 Kommentare

Mit VB Script Sonderzeichen aus Dateinamen entfernen.

Hallo zusammen.
Wie ja manche vielleicht wissen, hatte ich eine Fehleinschätzung bezüglich der Linkkonventionen. Daraus resultiert nun die Anforderung, in diesem Schritt alle Sonderzeichen aus Dateinamen zu konvertieren.
Den Einsatz des Scripts stelle ich mir so vor, das ich es in dem Ordner mit den umzubenennenden Dateien plaziere und das Script nach anklicken alle Dateien im Ordner nach folgendem Schema umbenennt:

Á,%C1,Á = A
á,%E1,á = a
À,%C0,À = A
à,%E0,à = a
Â,%C2, = A
â,%E2,â = a
Ä,%C4,Ä = Ae
ä,%E4,ä = ae
Ã,%C3,Ã = A
ã,%E3,ã = a
Ç,%C7,Ç = C
ç,%E7,ç = c
É,%C9,É = E
é,%E9,é = e
È,%C8,È = E
è,%E8,è = e
Ê,%CA,Ê = E
ê,%EA,ê = e
Í,%CD,Í = I (groß i)
í,%ED,í = i
Ì,%CC,Ì = I (groß i)
ì,%EC,ì = i
Õ,%D5,Õ = O
õ,%F5,õ = o
Ô,%D4,Ô = O
ô,%F4,ô = o
Ó,%D3,Ó =O
ó,%F3,ó = o
Ö,%D6,Ö = Oe
ö,%F6,ö = oe
Ú,%DA,Ú = U
ú,%FA,ú = u
Ü,%DC,Ü = Ue
ü,%FC,ü = ue

Die Endungen der Dateien sollen unverändert bleiben. Also aus Abença.php wird Abenca.php. Da ich die Gefahr der doppelten Dateinamen nach Umbenennen wegen der großen Anzahl der Dateien nicht abschätzen kann( hier im Beispiel würde z.B die Datei Abenca.php schon regulär existieren), sollte eine Prüfung auf Dopplung nach einer virtuellen Umbenennung erfolgen, bevor die Umbenennung real durchgeführt wird. Falls schon vorhanden, die Datei mit Sonderzeichen in eine Protokolldatei reinschreiben.
Da ich leider in VB noch sehr unerfahren bin, würde ich mich sehr freuen, hier wieder einmal gute Hilfe zu bekommen.
Und ich verspreche auch, mich nach Fertigstellung meines Projektes verstärkt in VB einzuarbeiten, so das ich dann nur noch um kleinere Korekturen nachfragen muß, also schon eine Grundstruktur vorlegen kann.
Darum bin ich um so erfreuter, festhalten zu können, das hier auf administrator.de viele Menschen (speziel bastla) anderen sehr fachkundig weiterhelfen.
Mit freundlichen Grüßen
Fraenky
Mitglied: bastla
09.11.2007 um 18:59 Uhr
Hallo Fraenky!

Etwas zum Testen:
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,&Aacute;,À,%C0,&Agrave;,Â,%C2,&Acirc;,Ã,%C3,&Atilde; 
02.
a,á,%E1,&aacute;,à,%E0,&agrave;,â,%E2,&acirc;,ã,%E3,&atilde; 
03.
Ae,Ä,%C4,&Auml; 
04.
ae,ä,%E4,&auml; 
05.
C,Ç,%C7,&Ccedil; 
06.
c,ç,%E7,&ccedil; 
07.
E,É,%C9,&Eacute;,È,%C8,&Egrave;,Ê,%CA,&Ecirc; 
08.
e,é,%E9,&eacute;,è,%E8,&egrave;,ê,%EA,&ecirc; 
09.
I,Í,%CD,&Iacute;,Ì,%CC,&Igrave; 
10.
i,í,%ED,&iacute;,ì,%EC,&igrave; 
11.
O,Õ,%D5,&Otilde;,Ô,%D4,&Ocirc;Ó,%D3,&Oacute; 
12.
o,õ,%F5,&otilde;,ô,%F4,&ocirc;ó,%F3,&oacute; 
13.
Oe,Ö,%D6,&Ouml; 
14.
oe,ö,%F6,&ouml; 
15.
U,Ú,%DA,&Uacute; 
16.
u,ú,%FA,&uacute; 
17.
Ue,Ü,%DC,&Uuml; 
18.
ue,ü,%FC,&uuml;
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.

Grüße
bastla
Bitte warten ..
Mitglied: Fraenky
09.11.2007 um 22:01 Uhr
Waou bastla.
Ein Script, ein Volltreffer. In atemberaubender Schnelligkeit wird alles zu 100% erledigt. Ich habe den Ordner auf das Script gezogen und es lief wie am Schnürchen. Auch die Dopplungen ( ca. 20) wurden korrekt angezeigt.
1A suuuper bastla.
Danke
Fraenky

PS.
Verstehe ich des Script richtig, das Du das, was ich virtuelles Umbenennen genannt habe, in diesen Zeilen mit dieser If Not Anweisung realisiert hast?
01.
If Not fso.FileExists(oFile.ParentFolder & "\" & sNameNew & sType) Then oFile.Name = sNameNew & sType
Bitte warten ..
Mitglied: bastla
10.11.2007 um 09:49 Uhr
Hallo Fraenky!

In atemberaubender Schnelligkeit ...
... spricht für Deine Hardware.

... virtuelles Umbenennen ... in diesen Zeilen mit dieser If Not Anweisung realisiert ...
If Not fso.FileExists(oFile.ParentFolder & "\" & sNameNew & sType) Then
oFile.Name = sNameNew & sType
Ja; es wird einfach das Vorhandensein einer Datei mit dem neuen Namen und dem alten Typ überprüft und entsprechend dem Ergebnis der Überprüfung umbenannt oder protokolliert.

Grüße
bastla
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 ...

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

Frage von Saschaaaaa zum Thema VB for Applications ...

VB for Applications
gelöst VB Script nach gefundenem Wort die nächsten 4 Zeichen ersetzten (2)

Frage von deutsch73 zum Thema VB for Applications ...

Batch & Shell
USB-Festplatte per Script sicher entfernen und wieder anhängen (8)

Frage von Atti58 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (27)

Frage von patz223 zum Thema Windows Userverwaltung ...

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

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

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

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

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...