Top-Themen

Aktuelle Themen (A bis Z)

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.

Mitglied: Fraenky

Fraenky (Level 1) - Jetzt verbinden

09.11.2007, aktualisiert 10.11.2007, 13744 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.
MfG
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 ..
Ähnliche Inhalte
Windows Server
Drucker entfernen in VB-Script
gelöst Frage von NilsvLehnWindows Server2 Kommentare

Hallo ich habe eine kleine Frage bzgl. unseres Anmeldeskriptes. Ich habe ein IT-netzwerk an einer Uni übernommen. Ich arbeite ...

VB for Applications

Mit VB Script Sonderzeichen in Datei und Ordnernamen umbenennen

Frage von SirMcFrostyVB for Applications2 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" ...

Ubuntu

Ubuntu - Sonderzeichen aus Dateinamen entfernen

gelöst Frage von HenereUbuntu3 Kommentare

Servus zusammen, ich habe hier eine Fotosammlung auf nem Webserver mit root-Zugriff liegen. Ich würde gerne rekursiv die Dateien ...

Batch & Shell

Sonderzeichen aus einer Variable entfernen?

gelöst Frage von KriegstreiberBatch & Shell13 Kommentare

Ich versuche das so gut es geht in Worte zu fassen. Ich habe folgendes vor: Eine Datei aus einem ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 23 StundenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...

Windows Netzwerk
Backup über WAN
Frage von petereWindows Netzwerk11 Kommentare

Hallo, ich muss aus einem entfernten WAN (synchrone 1Gbit) Daten sichern. Dabei handelt es sich sowohl um wenige große ...