
82312
24.11.2009, aktualisiert um 15:44:48 Uhr
Sonderzeichen in Ordner und Dateinamen mit VBScript ersetzen. (bastlas script)
Hallo Zusammen,
ich habe folgendes mit der Suchfunktion gefunden:
Mit VB Script Sonderzeichen entfernen.
Mit VB Script Sonderzeichen entfernen die 2.
Das Skript funktioniert soweit auch wunderbar. Danke an bastla für dieses Skript.
Mein Problem ist nun, das bei mir wirklich ALLE Sonderzeichen die in folgender ASCII Tabelle stehen durch "_" ersetz werden sollen.
http://www.torsten-horn.de/techdocs/ascii.htm
Wie kann ich die "SonderzeichenErsetzung.txt" so erweitern, dass diese Zeichen nun auch ersetz werden?
Ich habe schon einiges probiert, bin aber nicht so ganz fit mit den verschiedenen Codes.
Vielen Dank,
baeks
*EDIT*
Ich habe noch einen Script von bastla gefunden. Die Version mit der Liste von Zeichen die zugelassen werden scheint mir sinnvoller als eine Liste von Zeichen die nicht zugelassen werden, da sie viel kürzer ist. Ist es möglich auch Ordner damit umzubenennen?
ich habe folgendes mit der Suchfunktion gefunden:
Mit VB Script Sonderzeichen entfernen.
Mit VB Script Sonderzeichen entfernen die 2.
Das Skript funktioniert soweit auch wunderbar. Danke an bastla für dieses Skript.
Mein Problem ist nun, das bei mir wirklich ALLE Sonderzeichen die in folgender ASCII Tabelle stehen durch "_" ersetz werden sollen.
http://www.torsten-horn.de/techdocs/ascii.htm
Wie kann ich die "SonderzeichenErsetzung.txt" so erweitern, dass diese Zeichen nun auch ersetz werden?
Ich habe schon einiges probiert, bin aber nicht so ganz fit mit den verschiedenen Codes.
Vielen Dank,
baeks
*EDIT*
Ich habe noch einen Script von bastla gefunden. Die Version mit der Liste von Zeichen die zugelassen werden scheint mir sinnvoller als eine Liste von Zeichen die nicht zugelassen werden, da sie viel kürzer ist. Ist es möglich auch Ordner damit umzubenennen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 130111
Url: https://administrator.de/forum/sonderzeichen-in-ordner-und-dateinamen-mit-vbscript-ersetzen-bastlas-script-130111.html
Ausgedruckt am: 30.04.2025 um 19:04 Uhr
15 Kommentare
Neuester Kommentar

Hallo braeks1986!
habe nicht alle durchgesehen, aber zumindest diese beiden Scancodes stimmen nicht:
2B - "<" falsch = 56h
29 - "#" falsch = 2Bh
Fehlt z.B.:
Space = 39h
Gruß Dieter
habe nicht alle durchgesehen, aber zumindest diese beiden Scancodes stimmen nicht:
2B - "<" falsch = 56h
29 - "#" falsch = 2Bh
Fehlt z.B.:
Space = 39h
Gruß Dieter

Hallo baeks1986!
Im Prinzip, muss nur die Ersetzen-Liste mit den Sonderzeichen entsprechend erweitert werden. Sollen z.B. die Zeichen "§$#" durch "_" ersetzt werden, dann müsstest Du nur "_,§,$,#" in einer neuen Zeile anfügen. Ansonsten wäre es hilfreich, wenn Du erstmal klar definierst, was Deiner Meinung nach alles zu den Sonderzeichen zählt und/oder welche Zeichen zugelassen sind und ob Htm-Pseudos auch berücksicht werden müssen und und und???
Gruß Dieter
Im Prinzip, muss nur die Ersetzen-Liste mit den Sonderzeichen entsprechend erweitert werden. Sollen z.B. die Zeichen "§$#" durch "_" ersetzt werden, dann müsstest Du nur "_,§,$,#" in einer neuen Zeile anfügen. Ansonsten wäre es hilfreich, wenn Du erstmal klar definierst, was Deiner Meinung nach alles zu den Sonderzeichen zählt und/oder welche Zeichen zugelassen sind und ob Htm-Pseudos auch berücksicht werden müssen und und und???
Gruß Dieter

Hallo baeks1986!
Die Ersetzen-Funktion und Ersetzentabelle ist so aufgebaut, dass der Zeichen-Teil vor dem ersten Komma, alle nachfolgenden durch Kommagetrennte Zeichen ersetzt. Das können 1 Zeichen oder Zeichenfolgen wie bei den Htm-Pseudos sein.
Beispiel: _,§,$,ä,ö,ü,text
"§" wird ersetzt durch "_"
"$" wird ersetzt durch "_"
"ä" wird ersetzt durch "_"
"ö" wird ersetzt durch "_"
"ü" wird ersetzt durch "_"
"text" wird ersetzt durch "_"
Und was ist mit den Htm-Pseudos z.b. ü oder %C0 und Umlauten. Hast Du Htm-Pseudos in Deinen Datei- und Ordnernamen?
Wenn nicht, würde man keine Ersetzen-Tabelle benötigen und das Ganze mit einer If- oder Case-Anweisungen lösen.
Gruß Dieter
Die Ersetzen-Funktion und Ersetzentabelle ist so aufgebaut, dass der Zeichen-Teil vor dem ersten Komma, alle nachfolgenden durch Kommagetrennte Zeichen ersetzt. Das können 1 Zeichen oder Zeichenfolgen wie bei den Htm-Pseudos sein.
Beispiel: _,§,$,ä,ö,ü,text
"§" wird ersetzt durch "_"
"$" wird ersetzt durch "_"
"ä" wird ersetzt durch "_"
"ö" wird ersetzt durch "_"
"ü" wird ersetzt durch "_"
"text" wird ersetzt durch "_"
Und was ist mit den Htm-Pseudos z.b. ü oder %C0 und Umlauten. Hast Du Htm-Pseudos in Deinen Datei- und Ordnernamen?
Wenn nicht, würde man keine Ersetzen-Tabelle benötigen und das Ganze mit einer If- oder Case-Anweisungen lösen.
Gruß Dieter

Hallo baeks1986!
Eigentlich hatte ich an so was gedacht, aber leider geht das nur in VBA. In VBS gibt es keinen To-Operator:
In VBS dann entweder so (das gleiche in Grün):
oder etwas aufwendiger so:
Oder zwecks Wartungsfreundlichkeit doch die Sonderzeichen.Txt anpassen. Du hast die Freie Auswahl
Gruß Dieter
Eigentlich hatte ich an so was gedacht, aber leider geht das nur in VBA. In VBS gibt es keinen To-Operator:
Select Case c
Case "A" To "Z"
Case "a" To "z"
Case "0" To "9"
Case Else
'Tue Was
End Select
Function ReplaceSpecialChar(ByRef Text)
s = Text
For i = 1 To Len(s)
c = Mid(s, i, 1)
If c >= "0" And c <= "9" Then 'Wenn True Do Nothing
ElseIf c >= "A" And c <= "Z" Then 'Wenn True Do Nothing
ElseIf c >= "a" And c <= "z" Then 'Wenn True Do Nothing
Else
s = Replace(s, c, "_") 'Wenn False Do Replace
End If
Next
ReplaceSpecialChar = s
End Function
Function ReplaceSpecialChar(ByRef Text)
s = Text
For i = 1 To Len(s)
c = Mid(s, i, 1)
Select Case c
Case "0","1","2","3","4","5","6","7","8","9"
Case "A","B","C","D","E","F","G","H","I","J","K","L","M", _
"N","O","P","Q","R","S","T","U","V","W","X","Y","Z"
Case "a","b","c","d","e","f","g","h","i","j","k","l","m", _
"n","o","p","q","r","s","t","u","v","w","x","y","z"
Case Else
s = Replace(s, c, "_")
End Select
Next
ReplaceSpecialChar = s
End Function
Gruß Dieter

Hallo Max!
Gern geschehen
Gruß Dieter
Gern geschehen
Gruß Dieter

Hallo baeks1986!
Schön, dass Du den Code nochmal komplett gepostet hast
Die Zeile 12 könntest Du allerdings noch entfernen, da die gleiche Anweisung in Zeile 15 steht und die Datei unabhängig von True/False schließt
Gruß Dieter
Schön, dass Du den Code nochmal komplett gepostet hast
Die Zeile 12 könntest Du allerdings noch entfernen, da die gleiche Anweisung in Zeile 15 steht und die Datei unabhängig von True/False schließt
Gruß Dieter

Hallo baeks1986!
In Deinem Code Zeile 27 hast Du ja bereits eine Zerlegung des Dateinamens. Z.B. Datei = MeineDatei.Xyz
Das kann man entsprechend erweitern z.B. Datei-Pfad = X:\Test1\Test2\Datei.Xyz
Das sollte Dir weiterhelfen
Gruß Dieter
In Deinem Code Zeile 27 hast Du ja bereits eine Zerlegung des Dateinamens. Z.B. Datei = MeineDatei.Xyz
For Each oFile In oFolder.Files
sNameOld = Left(oFile.Name, InStrRev(oFile.Name, ".") - 1) '= MeineDatei
sType = Mid(oFile.Name, InStrRev(oFile.Name, ".")) '= Xyz
Next
For Each oFile In oFolder.Files
sSize = oFile.Size '= Size in Byte
sPath = oFile.Path '= X:\Test1\Test2\Datei.Xyz
sFolder1 = oFolder.Path '= X:\Test1\Test2
sFolder2 = oFolder.ParentFolder '= X:\Test1
sFolder3 = oFolder.Name '= Test2
sFile = oFile.Name '= Datei.Xyz
sName = oFso.GetBaseName(sPath) '= Datei
sType = oFso.GetExtensionName(sPath) '= Xyz
'Weitere Funktionen
nFolder = sFolder2 & "\Kopie" & sFolder3 '= X:\Test1\KopieTest2
nPath = oFso.BuildPath(nFolder, sFile) '= X:\Test1\KopieTest2\Datei.Xyz
If sSize > MaxSize Then 'Test Size
If Not oFso.FolderExists(nFolder) Then 'Test Folder Exists
oFso.CreateFolder (nFolder) 'Create Kopie-Folder
End If
oFso.MoveFile sPath, nPath 'Move File
End If
Next
Das sollte Dir weiterhelfen
Gruß Dieter