Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

VBS Dateien als UTF-8 speichern

Frage Entwicklung VB for Applications

Mitglied: staga

staga (Level 1) - Jetzt verbinden

29.05.2012 um 16:51 Uhr, 3181 Aufrufe, 6 Kommentare

Hallo zusammen

Ich habe folgende Frage und hoffe das mir hier jemand weiterhelfen kann.

ich möchte gerne via Script in einem Ordner alle bestehende Files mit der Endung xml speichern als txt mit der Option Encoding UTF-8!!!.

Ich habe bereits mehrfach gegoogelt jedoch bin ich nicht fündig geworden daher hoffe ich das mir hier jemand weiterhelfen kann.

gruss
staga
Mitglied: bastla
29.05.2012 um 18:31 Uhr
Hallo staga!
Ich habe bereits mehrfach gegoogelt
Vielleicht hättest Du gleich hier suchen sollen : http://www.administrator.de/forum/VBScript-Zeichensatz-konvertieren-148 ...

Grüße
bastla
Bitte warten ..
Mitglied: staga
30.05.2012 um 08:19 Uhr
Hallo bastla

Vielen dank für die Antwort, funktioniert soweit tip top.

Vielleicht kannst du oder jemand anders mir noch sagen was ich tun muss bzw. wie der Parameter heist damit ich alle Dateien in einem Verzeichnis abarbeiten kann. Im Script (http://www.administrator.de/forum/VBScript-Zeichensatz-konvertieren-148 ...) wird ja eine einzelne Datei angegeben ich habe jedoch mehrere Dateien in einem Verzeichnis.

Sorry wenn ich so dumm frage aber ich bin ein blutiger Anfänger was scripting angeht.

gruss
staga
Bitte warten ..
Mitglied: bastla
30.05.2012, aktualisiert um 08:59 Uhr
Hallo staga!

Dazu brauchst Du eine Schleife drumherum - ungetestet etwa:
01.
Ordner = "D:\Dein Ordner" 
02.
Typ = "xml" 
03.
Zusatz = "_neu" 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
 
06.
For Each File In fso.GetFolder(Ordner).Files 'alle Dateien des Ordners durchgehen 
07.
    FileTyp = fso.GetExtensionName(File.Name) 'Dateityp ermitteln 
08.
    'Typ überprüfen (alles in Kleinbuchstaben umwandeln, da "XML" <> "xml") 
09.
    If LCase(FileTyp) = LCase(Typ) Then 
10.
        AnsiPath = File.Path 'Pfad ANSI-Datei 
11.
        Utf16Path = fso.GetParentFolderName(AnsiPath) & "\" & fso.GetBaseName(AnsiPath) & Zusatz & "." & FileTyp' Pfad UTF-Datei 
12.
        'ab hier wie im verlinkten Script 
13.
        '... 
14.
    End If 
15.
Next
Anmerkung: Natürlich wäre
fso.GetParentFolderName(AnsiPath)
nicht nötig, da Du den Ordner, in dem die Datei liegt, ohnehin schon kennst (steht in der Variablen "Ordner") - aber da Du ja etwas lernen willst ...

Grüße
bastla
Bitte warten ..
Mitglied: staga
30.05.2012, aktualisiert um 10:01 Uhr
Hallo
Danke erstmal. Also ich habe versucht das Script zusammen zu stellen. Irgendwie bringe ich es nicht zum laufen. Es erscheint immer ein fehler Linie 18 Char 9. Obschon jedesmal das erste File im Ordner erzeugt wird.

01.
Ordner = "C:\Temp\test\test1\ori" 
02.
AnsiPath = "C:\Temp\test\test1\ori" 
03.
Utf8Path = "C:\Temp\test\test1\ori" 
04.
Typ = "xml" 
05.
Zusatz = "_neu" 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
 
08.
For Each File In fso.GetFolder(Ordner).Files 'alle Dateien des Ordners durchgehen 
09.
    FileTyp = fso.GetExtensionName(File.Name) 'Dateityp ermitteln 
10.
    'Typ überprüfen (alles in Kleinbuchstaben umwandeln, da "XML" <> "xml") 
11.
    If LCase(FileTyp) = LCase(Typ) Then 
12.
        AnsiPath = File.Path 'Pfad ANSI-Datei 
13.
        Utf8Path = fso.GetParentFolderName(AnsiPath) & "\" & fso.GetBaseName(AnsiPath) & Zusatz & "." & FileTyp' Pfad UTF-Datei 
14.
        'ab hier wie im verlinkten Script 
15.
        'Const AnsiPath = "C:\Temp\test\test1\ori" 
16.
        'Const Utf8Path = "C:\Temp\test\test1\ori" 
17.
 
18.
        Const adTypeBinary = 1 
19.
        Const adTypeText = 2 
20.
        Const adSaveCreateOverWrite = 2 
21.
  
22.
Dim BinaryStream, Text 
23.
     
24.
Set BinaryStream = CreateObject("ADODB.Stream") 
25.
         
26.
With BinaryStream 
27.
    .Type = adTypeText 
28.
    .Charset = "x-Ansi" 
29.
    .Open 
30.
    .LoadFromFile AnsiPath 
31.
     Text = .ReadText 
32.
    .Close 
33.
End With 
34.
         
35.
With BinaryStream 
36.
    .Type = adTypeText 
37.
    .Charset = "UTF-8" 
38.
    .Open 
39.
    .WriteText Text 
40.
    .SaveToFile Utf8Path, adSaveCreateOverWrite 
41.
    .Close 
42.
End With 
43.
        End If 
44.
        Next
Bitte warten ..
Mitglied: staga
30.05.2012 um 10:31 Uhr
Ok ich hab den Fehler gefunden. Ich habe die Zeilen 18-20 an den Anfang gesetzt - nun läufts.

Danke nochmals für die Hilfe

gruss
Staga
Bitte warten ..
Mitglied: bastla
30.05.2012 um 11:30 Uhr
Hallo staga!

Sorry, hatte nicht so genau darauf geachtet, dass Dieter (richtiger Weise) Konstante verwendet - diese dürfen natürlich im gesamten Script nur einmal erstellt werden.
Die Zeilen 2 und 3 sind überflüssig, da ja die Pfade in den Zeilen 12 und 13 jeweils neu ermittelt werden.
Noch ein Tipp: Gewöhne es Dir an, konsequent Einrückungen zu verwenden (zB auch für die Zeilen ab 22) - damit wird der Code wesentlich übersichtlicher ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...