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, 14121 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
VB for Applications

VB-Script in VB-Script starten und Parameter übergeben

gelöst Frage von denkisVB for Applications7 Kommentare

Hallo liebe Scriptgemeinde, ich muss mehrere Rechner für den Übergang in eine neue Domäne vorbereiten. Dafür sind drei wesentliche ...

Batch & Shell

VB Script ändert Dateinamen

gelöst Frage von mschaedler1982Batch & Shell5 Kommentare

Hallo zusammen. Kurze Erläuterung zu diesem Thema. Eine Maschine legt jeden Tag zu einer bestimmten Uhrzeit sehr sehr viele ...

VB for Applications

VB-Script per Aufgabenplanung

gelöst Frage von S4kar97VB for Applications2 Kommentare

Hallo, Ich habe mir ein VB-Script erstellt, welches im Grunde ein Programm startet und diesem Parameter übergibt und die ...

Entwicklung

VB Script Drucker hinzufügen

Frage von Marcel1989Entwicklung3 Kommentare

Funktionsweise sollte definitiv sein das mit einem Script sich 2 verschiedene Betriebssysteme ein und denselben Drucker holen. Mein Script ...

Neue Wissensbeiträge
Humor (lol)
Und wie seid Ihr gegen Cyberattacken gewappnet?
Information von DerWoWusste vor 15 StundenHumor (lol)4 Kommentare

aber wo ist der Hammer? :-)

Sicherheit
Ein weiterer Microsoft-Stirnklatscher
Information von DerWoWusste vor 1 TagSicherheit7 Kommentare

Habe gerade einen Artikel zu einem Sicherheitsproblem gefunden, welches mir zu seiner Zeit (gepatcht 2015) wohl durchgerutscht ist. Es ...

Windows 10
Upgradepfade Windows 10 LTSC
Erfahrungsbericht von Datenreise vor 1 TagWindows 10

Nur eine kurze Info, für diejenigen, die es interessiert, da es hierzu im Netz aus nachvollziehbaren Gründen nicht allzu ...

Administrator.de Feedback
Wartungsarbeiten heute Nacht (Update)
Information von Frank vor 1 TagAdministrator.de Feedback10 Kommentare

Hallo User, durch Umbauarbeiten in unserem Rechenzentrum (am Backbone) kann es heute Nacht (14-15.01.2019) zu kurzen Ausfällen unserer Seite ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 - kein Boot mehr nach Domänenaustritt
gelöst Frage von Ghost108Windows 1025 Kommentare

Hallo zusammen, habe hier eine Windows 10 Maschine, die ich gerne aus der Domäne austreten lassen möchte. Nach Austritt ...

Windows 10
Windows 10 1803 - nicht identifiziertes Netzwerk - kein Login an Domäne möglich
Frage von Tomy389Windows 1021 Kommentare

Hallo Zusammen, ich hoffe zu dem Thema gibt es nicht schon einen Thread aber ich sollte eigentlich schon alles ...

Exchange Server
Microsoft Exchange Ser ver 2016 CU 8 auf den neuesten Stand bringen
gelöst Frage von Hendrik2586Exchange Server20 Kommentare

Hallo an euch alle. :) Kurze Frage. Ich habe hier einen Exchange Server wie o.g. Problem ist das wir ...

Microsoft
SFirm 4.0 auf Terminalserver startet für jeden angemeldeten Benutzer diverse Dienste
Frage von Frank84Microsoft17 Kommentare

Hallo zusammen, wir verwenden Sfirm 4.0 auf einem Terminalserver (der SQL Server ist auf einem separaten Server), das Problem ...