Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Umlaute in Datei ändern mit VBS Script
Frage
Hallo ich habe eine Text Datei in der eine Liste von Namen steht. Die soll geöffnet werden und Zeile für Zeile ausgelesen werden danach sollen alle Umlaute getauscht werden z.B.
ä in ae danach soll die geänderte Datei in in einer neuen Text Datei abgespeichert werden.
Antwort 1 von Solo
Hi, ich habe was gefunden.
´ Ansi2Ascii.VBS
´ Dieses Script wandelt Textdateien (*.txt) von ANSI nach ASCII um und
´ umgekehrt.
Set myfiles = CreateObject("Scripting.FileSystemObject")
Set myshell = Wscript.CreateObject("Wscript.Shell")
Set Appshell = CreateObject("Shell.Application")
Set Sendenan=Wscript.arguments
Erweiterung = "txt"
Titel = "..., welcher die *.txt-Datei(en) enthält:"
On error resume next
if Sendenan.Count=0 then
Set AppFolder = Appshell.BrowseForFolder(0, Titel, &H0001, 17)
Ordner = AppFolder.ParentFolder.ParseName(AppFolder.Title).Path
If err.number > 0 then
i=instr(AppFolder, ":")
Ordner = mid(AppFolder, i - 1, 1) & ":\"
end if
else
Ordner = Sendenan(0)
if not (myfiles.FolderExists(Ordner)) then
g = msgbox("Wählen Sie bitte einen gültigen Ordner aus")
wscript.quit
end if
end if
Do
Wahl = Inputbox("Möchten Sie von:" +VBCR + VBCR & " 1 = ASCII (DOS) zu ANSI (Win)" +VBCR +VBCR & " 2 = ANSI (Win) zu ASCII (DOS)" +VBCR +VBCR & "konvertieren?", " Konvertierung", "1")
Set Ord = myfiles.GetFolder(Ordner)
If Wahl = "" then
wscript.quit
elseif Wahl = "2" then SubSearch2 Ord
elseif Wahl = "1" then SubSearch1 Ord
else
d = Msgbox("Geben Sie bitte entweder 1 oder 2 ein")
end if
loop until wahl = 2 or wahl = 1
Sub SubSearch2(Byval Ord)
filesearch2 Ord
Set Weitere = Ord.SubFolders
For Each AktuellerOrdner In Weitere
check = mid(AktuellerOrdner, len(AktuellerOrdner)-4, 5)
if not check = "ascii" then
SubSearch2 AktuellerOrdner
end if
Next
End Sub
Sub Filesearch2(Byval AktuellerOrdner)
If not (myfiles.FolderExists(AktuellerOrdner & "\ascii")) then
Set ascii = myfiles.CreateFolder(AktuellerOrdner & "\ascii")
end if
Set Texte = AktuellerOrdner.Files
For Each txt in Texte
Set x = myfiles.GetFile(txt)
groesse = x.Size
basis = myfiles.GetBaseName(txt)
Erw = myfiles.GetExtensionName(txt.name)
Erw2 = Lcase(Erw)
if Erw2 = Erweiterung and groesse > 0 then
Set dat = myfiles.OpenTextFile(txt)
t = dat.readall
dat.close
t = replace(t, chr(228), chr(132))
t = replace(t, chr(246), chr(148))
t = replace(t, chr(252), chr(129))
t = replace(t, chr(196), chr(142))
t = replace(t, chr(214), chr(153))
t = replace(t, chr(220), chr(154))
t = replace(t, chr(223), chr(225))
Set dat = myfiles.OpenTextFile(AktuellerOrdner & "\ascii\" & basis & ".asc", 2, true)
dat.Write t
dat.close
end if
next
Set ascjj = myfiles.GetFolder(AktuellerOrdner & "\ascii")
leer = ascjj.size
if leer = 0 then
myfiles.DeleteFolder(ascjj)
end if
End Sub
´ Ansi2Ascii.VBS
´ Dieses Script wandelt Textdateien (*.txt) von ANSI nach ASCII um und
´ umgekehrt.
Set myfiles = CreateObject("Scripting.FileSystemObject")
Set myshell = Wscript.CreateObject("Wscript.Shell")
Set Appshell = CreateObject("Shell.Application")
Set Sendenan=Wscript.arguments
Erweiterung = "txt"
Titel = "..., welcher die *.txt-Datei(en) enthält:"
On error resume next
if Sendenan.Count=0 then
Set AppFolder = Appshell.BrowseForFolder(0, Titel, &H0001, 17)
Ordner = AppFolder.ParentFolder.ParseName(AppFolder.Title).Path
If err.number > 0 then
i=instr(AppFolder, ":")
Ordner = mid(AppFolder, i - 1, 1) & ":\"
end if
else
Ordner = Sendenan(0)
if not (myfiles.FolderExists(Ordner)) then
g = msgbox("Wählen Sie bitte einen gültigen Ordner aus")
wscript.quit
end if
end if
Do
Wahl = Inputbox("Möchten Sie von:" +VBCR + VBCR & " 1 = ASCII (DOS) zu ANSI (Win)" +VBCR +VBCR & " 2 = ANSI (Win) zu ASCII (DOS)" +VBCR +VBCR & "konvertieren?", " Konvertierung", "1")
Set Ord = myfiles.GetFolder(Ordner)
If Wahl = "" then
wscript.quit
elseif Wahl = "2" then SubSearch2 Ord
elseif Wahl = "1" then SubSearch1 Ord
else
d = Msgbox("Geben Sie bitte entweder 1 oder 2 ein")
end if
loop until wahl = 2 or wahl = 1
Sub SubSearch2(Byval Ord)
filesearch2 Ord
Set Weitere = Ord.SubFolders
For Each AktuellerOrdner In Weitere
check = mid(AktuellerOrdner, len(AktuellerOrdner)-4, 5)
if not check = "ascii" then
SubSearch2 AktuellerOrdner
end if
Next
End Sub
Sub Filesearch2(Byval AktuellerOrdner)
If not (myfiles.FolderExists(AktuellerOrdner & "\ascii")) then
Set ascii = myfiles.CreateFolder(AktuellerOrdner & "\ascii")
end if
Set Texte = AktuellerOrdner.Files
For Each txt in Texte
Set x = myfiles.GetFile(txt)
groesse = x.Size
basis = myfiles.GetBaseName(txt)
Erw = myfiles.GetExtensionName(txt.name)
Erw2 = Lcase(Erw)
if Erw2 = Erweiterung and groesse > 0 then
Set dat = myfiles.OpenTextFile(txt)
t = dat.readall
dat.close
t = replace(t, chr(228), chr(132))
t = replace(t, chr(246), chr(148))
t = replace(t, chr(252), chr(129))
t = replace(t, chr(196), chr(142))
t = replace(t, chr(214), chr(153))
t = replace(t, chr(220), chr(154))
t = replace(t, chr(223), chr(225))
Set dat = myfiles.OpenTextFile(AktuellerOrdner & "\ascii\" & basis & ".asc", 2, true)
dat.Write t
dat.close
end if
next
Set ascjj = myfiles.GetFolder(AktuellerOrdner & "\ascii")
leer = ascjj.size
if leer = 0 then
myfiles.DeleteFolder(ascjj)
end if
End Sub
Antwort 2 von Solo
Sub SubSearch1(Byval Ord)
filesearch1 Ord
Set Weitere = Ord.SubFolders
For Each AktuellerOrdner In Weitere
check = mid(AktuellerOrdner, len(AktuellerOrdner)-3, 4)
if not check = "ansi" then
SubSearch1 AktuellerOrdner
end if
Next
End Sub
Sub Filesearch1(Byval AktuellerOrdner)
If not (myfiles.FolderExists(AktuellerOrdner & "\ansi")) then
Set ansi = myfiles.CreateFolder(AktuellerOrdner & "\ansi")
end if
Set Texte = AktuellerOrdner.Files
For Each txt in Texte
Set x = myfiles.GetFile(txt)
groesse = x.Size
basis = myfiles.GetBaseName(txt)
Erw = myfiles.GetExtensionName(txt.name)
Erw1 = LCase(Erw)
if Erw1 = Erweiterung and groesse > 0 then
Set dat = myfiles.OpenTextFile(txt)
t = dat.readall
dat.close
t = replace(t, chr(132), chr(228))
t = replace(t, chr(148), chr(246))
t = replace(t, chr(129), chr(252))
t = replace(t, chr(142), chr(196))
t = replace(t, chr(153), chr(214))
t = replace(t, chr(154), chr(220))
t = replace(t, chr(225), chr(223))
Set dat = myfiles.OpenTextFile(AktuellerOrdner & "\ansi\" & basis & ".ans", 2, true)
dat.Write t
dat.close
end if
next
Set ansj = myfiles.GetFolder(AktuellerOrdner & "\ansi")
leer = ansj.size
if leer = 0 then
myfiles.DeleteFolder(ansj)
end if
End Sub
msgbox Space(11) & "Fertig!",," Information"
wscript.quit
Füge die Zeilen in Notepad ein und speichere die Datei als Ansi2Ascii.vbs ab. Sollte es nicht funktionieren, hängt es mit dem Kopieren zusammen. Meist Zeilenumbruch wo keiner sein soll.
MfG
filesearch1 Ord
Set Weitere = Ord.SubFolders
For Each AktuellerOrdner In Weitere
check = mid(AktuellerOrdner, len(AktuellerOrdner)-3, 4)
if not check = "ansi" then
SubSearch1 AktuellerOrdner
end if
Next
End Sub
Sub Filesearch1(Byval AktuellerOrdner)
If not (myfiles.FolderExists(AktuellerOrdner & "\ansi")) then
Set ansi = myfiles.CreateFolder(AktuellerOrdner & "\ansi")
end if
Set Texte = AktuellerOrdner.Files
For Each txt in Texte
Set x = myfiles.GetFile(txt)
groesse = x.Size
basis = myfiles.GetBaseName(txt)
Erw = myfiles.GetExtensionName(txt.name)
Erw1 = LCase(Erw)
if Erw1 = Erweiterung and groesse > 0 then
Set dat = myfiles.OpenTextFile(txt)
t = dat.readall
dat.close
t = replace(t, chr(132), chr(228))
t = replace(t, chr(148), chr(246))
t = replace(t, chr(129), chr(252))
t = replace(t, chr(142), chr(196))
t = replace(t, chr(153), chr(214))
t = replace(t, chr(154), chr(220))
t = replace(t, chr(225), chr(223))
Set dat = myfiles.OpenTextFile(AktuellerOrdner & "\ansi\" & basis & ".ans", 2, true)
dat.Write t
dat.close
end if
next
Set ansj = myfiles.GetFolder(AktuellerOrdner & "\ansi")
leer = ansj.size
if leer = 0 then
myfiles.DeleteFolder(ansj)
end if
End Sub
msgbox Space(11) & "Fertig!",," Information"
wscript.quit
Füge die Zeilen in Notepad ein und speichere die Datei als Ansi2Ascii.vbs ab. Sollte es nicht funktionieren, hängt es mit dem Kopieren zusammen. Meist Zeilenumbruch wo keiner sein soll.
MfG
Antwort 3 von Tomboy2201
Dankeschön ich brobiere es gleich aus

