'v5.4*********************************************************** ' File: zeilennr-msgbox.vbs ' Autor: dieseyer@gmx.de ' http://dieseyer.de ' ' ' '*************************************************************** Option Explicit ' Siehe http://dieseyer.de/dse-wsh-lernen.html#OptionExpl Dim fso : Set fso = WScript.CreateObject("Scripting.FileSystemObject") Dim WSHShell : Set WSHShell = WScript.CreateObject("WScript.Shell") Dim WSHNet : Set WSHNet = WScript.CreateObject("WScript.Network") Dim WshSysEnv : Set WshSysEnv = WSHShell.Environment("SYSTEM") Dim oArgs : Set oArgs = Wscript.Arguments Dim Pfad : Pfad = fso.GetParentFolderName( WScript.ScriptFullName ) Dim Pos, Txt, Tst, i, n, PC, DateiName Dim FileOut, FileIn 'hole alle Argumente '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For i = 0 to oArgs.Count - 1 ' hole alle Argumente If i = 0 Then DateiName = oArgs.item(i) Next Call ZeilenNrMsgBox( DateiName ) ' MsgBox "Das ist das Ende . . . ", , WScript.ScriptName '*************************************************************** Sub ZeilenNrMsgBox( Datei ) '*************************************************************** ' alle Zeilen lesen und an Array übergeben ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Txt = fso.GetParentFolderName( Datei ) & "\" & fso.GetBaseName( Datei ) & "-." & fso.GetExtensionName( Datei ) If not fso.FileExists( Txt ) Then fso.CopyFile Datei, Txt, True 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 ReDim Preserve Zeile(i) Zeile(i) = FileIn.Readline i = i + 1 Loop If i < 1 Then ReDim Preserve Zeile(i) Zeile(i) = "Leerdatei" End If FileIn.Close Set FileIn = nothing ' Array bearbeiten; hier: Zeilennummer einfügen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ for i = LBound( Zeile ) to UBound( Zeile ) If InStrRev( Zeile(i), " :: " ) > 4 Then ' Zeilennummer auf vier Stellen mit führender 0 erweitern ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ n = i + 1 If Len( n ) = 1 Then n = "0" & n If Len( n ) = 2 Then n = "0" & n If Len( n ) = 3 Then n = "0" & n Pos = InStrRev( Zeile(i), " :: " ) ' If i < 73 AND i > 60 Then InputBox Zeile(i), "76 : " & Pos, Zeile(i) ' MsgBox Txt, 4096, "67 : " & Anfang - " & WScript.ScriptName ' das Anführungszeichen vor dem " :: " suchen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If Mid( Zeile(i), Pos - 5, 1 ) = """" Then ' if i < 130 Then MsgBox "1>" & Left( Zeile(i), Pos - 4 ) & "<1" & vbCRLF & "2>" & Mid( Zeile(i), Pos + 3 ) & "<2" & "<==" , 4096, n & " : 74 : " Zeile(i) = Left( Zeile(i), Pos - 5 ) & n & " :: " & Mid( Zeile(i), Pos + 3 ) End If If Mid( Zeile(i), Pos - 4, 1 ) = """" Then ' if i < 130 Then MsgBox "1>" & Left( Zeile(i), Pos - 4 ) & "<1" & vbCRLF & "2>" & Mid( Zeile(i), Pos + 3 ) & "<2" & "<==" , 4096, n & " : 74 : " Zeile(i) = Left( Zeile(i), Pos - 4 ) & n & " :: " & Mid( Zeile(i), Pos + 3 ) End If If Mid( Zeile(i), Pos - 3, 2 ) = "o " Then Zeile(i) = Left( Zeile(i), Pos - 3 ) & " " & n & " :: " & Mid( Zeile(i), Pos + 3) If Mid( Zeile(i), Pos - 4, 2 ) = "o " Then Zeile(i) = Left( Zeile(i), Pos - 4 ) & " " & n & " :: " & Mid( Zeile(i), Pos + 3 ) If Mid( Zeile(i), Pos - 5, 2 ) = "o " Then Zeile(i) = Left( Zeile(i), Pos - 5 ) & " " & n & " :: " & Mid( Zeile(i), Pos + 3 ) If Mid( Zeile(i), Pos - 6, 2 ) = "o " Then Zeile(i) = Left( Zeile(i), Pos - 6 ) & " " & n & " :: " & Mid( Zeile(i), Pos + 3 ) If Mid( Zeile(i), Pos - 3, 1 ) = """" Then ' If i < 73 AND i > 60 Then MsgBox Zeile(i), , "76 : " ' if i < 130 Then MsgBox "1>" & Left( Zeile(i), Pos - 3 ) & "<1" & vbCRLF & "2>" & Mid( Zeile(i), Pos + 3 ) & "<2" & "<==" , 4096, n & " : 86 : " Zeile(i) = Left( Zeile(i), Pos - 3 ) & n & " :: " & Mid( Zeile(i), Pos + 3) End If Zeile(i) = Replace( Zeile(i), " :: ", " :: " ) Zeile(i) = Replace( Zeile(i), " :: " , " :: " ) Zeile(i) = Replace( Zeile(i), " :: " , " :: " ) Zeile(i) = Replace( Zeile(i), " :: " , " :: " ) End If next ' Array in (Ziel-) Datei schreiben ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Datei = fso.GetParentFolderName( Datei ) & "\" & fso.GetBaseName( Datei ) & "--." & fso.GetExtensionName( Datei ) ' MsgBox Datei : WScript.Quit 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 FileOut.Close Set FileOuT = nothing ' (Ziel-) Datei anzeigen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' WSHShell.run "notepad """ & Datei & """" , , True ' True: Skriptabarbeitung wartet bis Programm (notepad) beendet ist End Sub ' ZeilenNrMsgBox( Datei )