Mit VB Script Sonderzeichen entfernen die 2.
Wie Bastla in dem Thread unter dem Link:
Mit VB Script Sonderzeichen entfernen.
beschrieben hat habe ich auch bei mir die Konvertierung umgesetzt.. Erstmal Danke auach von mir an Bastla.
Ich brauche dazu aber das ganze nicht nur für Dateien in diesem Ordner sondern auch für Dateien in Unterordnern und den Ordnernamen und Unterordnernamen selbst.
Hab schon bissl rumprobiert aber er springt nicht in unterordner, bzw wenn ich einen Ordner umbennen lassen konvertiert er mir die Dateien darin nicht mehr.
hier nochmal das Originalscript von Bastla.
Mit VB Script Sonderzeichen entfernen.
beschrieben hat habe ich auch bei mir die Konvertierung umgesetzt.. Erstmal Danke auach von mir an Bastla.
Ich brauche dazu aber das ganze nicht nur für Dateien in diesem Ordner sondern auch für Dateien in Unterordnern und den Ordnernamen und Unterordnernamen selbst.
Hab schon bissl rumprobiert aber er springt nicht in unterordner, bzw wenn ich einen Ordner umbennen lassen konvertiert er mir die Dateien darin nicht mehr.
hier nochmal das Originalscript von Bastla.
'RenameSpecial.vbs
Const sProtokoll = "C:\skript"
Const sSonder = "C:\skript\SonderzeichenErsetzung.txt"
If WScript.Arguments.Count = 0 Then
WScript.Echo "Ordner mit umzubenennenden Dateien als Parameter uebergeben!"
WScript.Quit(1)
End If
Set fso = CreateObject("Scripting.FileSystemObject")
sFolder = WScript.Arguments(0)
If Not fso.FolderExists(sFolder) Then
WScript.Echo sFolder & " ist keine gueltige Ordnerangabe!"
WScript.Quit(1)
End If
If Not fso.FileExists(sSonder) Then
WScript.Echo "Sonderzeichendaten " & sSonder & " nicht gefunden."
WScript.Quit(1)
End If
Set oSonder = fso.OpenTextFile(sSonder, 1)
If Not oSonder.AtEndOfStream Then
aSonder = Split(oSonder.ReadAll, vbCrLF)
Else
oSonder.Close
WScript.Echo "Sonderzeichendatei " & sSonder & " enthält keine Daten!"
WScript.Quit(1)
End If
oSonder.Close
If Right(LCase(WScript.FullName), 11) = "cscript.exe" Then
bConsole = True
Else
bConsole = False
End If
Set oProtokoll = fso.OpenTextFile(sProtokoll & "\" & Replace(Replace(sFolder, ":", ""), "\", "_") & "-Doppelt.txt", 2, True)
Set oFolder = fso.GetFolder(sFolder)
For Each oFile In oFolder.Files
sNameOld = Left(oFile.Name, InStrRev(oFile.Name, ".") - 1)
sType = Mid(oFile.Name, InStrRev(oFile.Name, "."))
If bConsole Then WScript.Echo "Bearbeite: " & oFile.Name
sNameNew = ReplaceSpecialChars(sNameOld)
If Not fso.FileExists(oFile.ParentFolder & "\" & sNameNew & sType) Then
oFile.Name = sNameNew & sType
Else
If sNameOld <> sNameNew Then oProtokoll.WriteLine oFile.Name
End If
Next
oProtokoll.Close
Function ReplaceSpecialChars(sOld)
sTemp = sOld
For Each sLine In aSonder
aChars = Split(sLine, ",")
For i = 1 To UBound(aChars)
sTemp = Replace(sTemp, aChars(i), aChars(0))
Next
Next
ReplaceSpecialChars = sTemp
End Function
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 116440
Url: https://administrator.de/contentid/116440
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo Cadsys-Chemnitz!
Es steckt zwar sicher Optimierungspotenzial in dem Script , aber grundsätzlich sollte es so funktionieren:
Grüße
bastla
Es steckt zwar sicher Optimierungspotenzial in dem Script , aber grundsätzlich sollte es so funktionieren:
'RenameSpecialR.vbs
Const sProtokoll = "C:\skript"
Const sSonder = "C:\skript\SonderzeichenErsetzung.txt"
If WScript.Arguments.Count = 0 Then
WScript.Echo "Ordner mit umzubenennenden Dateien als Parameter uebergeben!"
WScript.Quit(1)
End If
Set fso = CreateObject("Scripting.FileSystemObject")
sFolder = WScript.Arguments(0)
If Not fso.FolderExists(sFolder) Then
WScript.Echo sFolder & " ist keine gueltige Ordnerangabe!"
WScript.Quit(1)
End If
If Not fso.FileExists(sSonder) Then
WScript.Echo "Sonderzeichendaten " & sSonder & " nicht gefunden."
WScript.Quit(1)
End If
Set oSonder = fso.OpenTextFile(sSonder, 1)
If Not oSonder.AtEndOfStream Then
aSonder = Split(oSonder.ReadAll, vbCrLF)
Else
oSonder.Close
WScript.Echo "Sonderzeichendatei " & sSonder & " enthält keine Daten!"
WScript.Quit(1)
End If
oSonder.Close
If Right(LCase(WScript.FullName), 11) = "cscript.exe" Then
bConsole = True
Else
bConsole = False
End If
Set oProtokoll = fso.OpenTextFile(sProtokoll & "\" & Replace(Replace(sFolder, ":", ""), "\", "_") & "-Doppelt.txt", 2, True)
ProcessFolder(fso.GetFolder(sFolder))
oProtokoll.Close
Sub ProcessFolder(oFolder)
sNameOld = oFolder.Name
If bConsole Then WScript.Echo "Bearbeite: " & oFolder.Path
sNameNew = ReplaceSpecialChars(sNameOld)
If Not fso.FolderExists(oFolder.ParentFolder & "\" & sNameNew) Then
oFolder.Name = sNameNew
Else
If sNameOld <> sNameNew Then oProtokoll.WriteLine oFolder.Path
End If
For Each oFile In oFolder.Files
sNameOld = Left(oFile.Name, InStrRev(oFile.Name, ".") - 1)
sType = Mid(oFile.Name, InStrRev(oFile.Name, "."))
If bConsole Then WScript.Echo "Bearbeite: " & oFile.Path
sNameNew = ReplaceSpecialChars(sNameOld)
If Not fso.FileExists(oFile.ParentFolder & "\" & sNameNew & sType) Then
oFile.Name = sNameNew & sType
Else
If sNameOld <> sNameNew Then oProtokoll.WriteLine oFile.Path
End If
Next
For Each oSubFolder In oFolder.SubFolders
ProcessFolder(oSubFolder)
Next
End Sub
Function ReplaceSpecialChars(sOld)
sTemp = sOld
For Each sLine In aSonder
aChars = Split(sLine, ",")
For i = 1 To UBound(aChars)
sTemp = Replace(sTemp, aChars(i), aChars(0))
Next
Next
ReplaceSpecialChars = sTemp
End Function
bastla
Moin Cadsys-Chemnitz,
<OT>
running gag #397
WTF macht denn dieses Wort "Umbenennen" so schwierig?
Da ist kein "TZ", kein "PH" kein "Y" drin....
</OT>
Schönes Wochenende und drückt nachher mit mir Werder die Daumen.
Biber
<OT>
running gag #397
wenn ich einen Ordner umbennen lassen...
Menno, ich hab doch allen so oft angeboten, dass wir auch das viel einfachere Wort renamen oder meinetwegen umbenamsen verwenden dürfen...WTF macht denn dieses Wort "Umbenennen" so schwierig?
Da ist kein "TZ", kein "PH" kein "Y" drin....
</OT>
Schönes Wochenende und drückt nachher mit mir Werder die Daumen.
Biber
Schönes Wochenende und drückt nachher mit mir Werder die
Daumen.
Biber
Daumen.
Biber
Hat nix genutzt
Soo.. hallo zusammen!
..jetzt habe ich mich extra angemeldet um diesen verstaubten thread mal wieder vorzukramen..
ich habe hier 10000de von Dateien, Ordner und Unterordner bei welchen nach Kopieraktionen über verschiedenen Filesystem und Betriebsysteme die Umlauten falsch angezeigt werden. Jetzt mag Windows XP die Dateien nicht mehr weiterkopieren.. ;)
Der Inhalt meiner "SonderzeichenErsetzung.txt" sieht jetzt wie folgt aus:
(jaa...ein grosses verkrüppeltes Ä suche ich noch.. )
ss,ß
Ae,ä
ae,ä
Oe,Ö
oe,├Â
Ue,Ü
ue,├╝
_, ,
_,(
_,)
Das Script läuft auch schön durch ersetzt aber nur Leerzeichen durch "_"
Habt ihr eine Erklärung dafür warum die anderen Zeichen nicht ersetzt werden?
Die Zeichen sind so wie sie in der shell angezeigt werden. kann vba damit evtl nicht umgehen??
Ich hatte hier auch eine .bat stapelverarbeitung von bastl gefunden. damit hat es geklappt.. aber halt ohne unterordner..usw... von daher gehe ich davon aus das ich schon die "richtigen" zeichen ersetze. ;) ..
unter windows werden nur kästchen angezeigt .
Was kann ich noch tun?
LG, die nullnummer
..jetzt habe ich mich extra angemeldet um diesen verstaubten thread mal wieder vorzukramen..
ich habe hier 10000de von Dateien, Ordner und Unterordner bei welchen nach Kopieraktionen über verschiedenen Filesystem und Betriebsysteme die Umlauten falsch angezeigt werden. Jetzt mag Windows XP die Dateien nicht mehr weiterkopieren.. ;)
Der Inhalt meiner "SonderzeichenErsetzung.txt" sieht jetzt wie folgt aus:
(jaa...ein grosses verkrüppeltes Ä suche ich noch.. )
ss,ß
Ae,ä
ae,ä
Oe,Ö
oe,├Â
Ue,Ü
ue,├╝
_, ,
_,(
_,)
Das Script läuft auch schön durch ersetzt aber nur Leerzeichen durch "_"
Habt ihr eine Erklärung dafür warum die anderen Zeichen nicht ersetzt werden?
Die Zeichen sind so wie sie in der shell angezeigt werden. kann vba damit evtl nicht umgehen??
Ich hatte hier auch eine .bat stapelverarbeitung von bastl gefunden. damit hat es geklappt.. aber halt ohne unterordner..usw... von daher gehe ich davon aus das ich schon die "richtigen" zeichen ersetze. ;) ..
unter windows werden nur kästchen angezeigt .
Was kann ich noch tun?
LG, die nullnummer