'v3.5******************************************************** ' File: cr2crlf.vbs ' Autor: dieseyer@gmx.de ' dieseyer.de ' ' wandelt in einer Datei jedes CR zu CRLF um (und löscht alle ' CRLFLF). '************************************************************ Option Explicit ' Siehe http://dieseyer.de/dse-wsh-lernen.html#OptionExpl Dim WSHShell, fso, FileIn, FileOut Dim Datei, Text, Txt, i, arrSort, arrTest(), oArgs Set WSHShell = WScript.CreateObject("WScript.Shell") Set fso = WScript.CreateObject("Scripting.FileSystemObject") set oArgs = Wscript.Arguments ' Fals ein Argument übergeben wurde, sollte es einen Dateinamen ' enthalten ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For i = 0 to oArgs.Count - 1 ' hole alle Argumente Datei = oArgs.item(i) If not fso.FileExists( Datei ) then MsgBox UCase( Datei ) & " existiert nicht!" & vbCRLF & vbCRLF & " . . . das ist das Ende.", , WScript.ScriptName WScript.Quit End If Exit For ' nur das erste Argument reicht Next ' Gibt's keinen Dateinamen, wird halt das Skript gelesen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if Datei = "" then Datei = WScript.ScriptName ' alle Zeilen lesen und an Array übergeben ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Set FileIn = FSO.OpenTextFile(Datei, 1 ) ' Datei zum Lesen öffnen i=0 Do While Not (FileIn.atEndOfStream) ' wenn Datei nicht zu ende ist, weiter machen i = i + 1 ReDim Preserve Zeile(i) Zeile(i) = FileIn.Readline Loop If i < 1 Then ReDim Preserve Zeile(i) Zeile(i) = "Leerdatei" End If Set FileIn = nothing ' Array bearbeiten; hier: Zeilennummer einfügen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ for i = LBound( Zeile ) to UBound( Zeile ) ' Zeile(i) = i & vbTab & Zeile(i) Zeile(i) = Replace( Zeile(i), vbCR, vbCRLF ) Zeile(i) = Replace( Zeile(i), vbCRLF & vbLF, vbCRLF ) Zeile(i) = Replace( Zeile(i), vbCRLF & vbLF, vbCRLF & "#X#" & i) Zeile(i) = Replace( Zeile(i), vbCRLF & vbLF, vbCRLF & "#X#" & i) Zeile(i) = Replace( Zeile(i), vbCRLF & vbLF, vbCRLF & "#X#" & i) next ' Array in (Ziel-) Datei schreiben ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Datei = fso.GetBaseName( Datei ) & "-.txt" Set FileOut = FSO.OpenTextFile( Datei , 2, true) ' Datei zum Screiben öffnen; 2: immer neu anlegen ' FileOut.WriteLine( vbCRLF & now() & vbCRLF ) ' nur Für Testzwecke for i = 0 to ubound( Zeile ) FileOut.WriteLine( Zeile(i) ) next Set FileOuT = nothing ' (Ziel-) Datei anzeigen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WSHShell.run "notepad """ & Datei & """" , , True ' True: Skriptabarbeitung wartet bis Programm (notepade) beendet ist ' (Ziel-) Datei löschen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fso.DeleteFile( Datei )