farmer
Goto Top

Datei durchsuchen

Detei durchsuchen

Hallo
ist es mit einer Batchdatei möglich von einer Datei einen Wert raus zu suchen??.
Beispiel:
in einer Datei test.txt, soll die Batchdatei in der 165. Zeile nach dem 65. Zeichen die nächsten 10 zeichen in eine datei Hallo.txt schreiben.
das heist, ich möchte einen bestimmten Wert, der sich dauernd ändert auslesen und in einer anderen datei speichern.

vielen Dank im voraus

mfg
Farmer

Content-ID: 5170

Url: https://administrator.de/contentid/5170

Ausgedruckt am: 25.11.2024 um 22:11 Uhr

gemini
gemini 28.12.2004 um 20:21:39 Uhr
Goto Top
Option Explicit
On Error Resume Next
Dim objFSO, objFile, s, i, strLine, strValue
i = 165 'Zeile mit dem gesuchten Wert
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("Pfad\zu\test.txt", 1)
For i = 0 To i
objFile.SkipLine
Next i
strLine = objFile.ReadLine
objFile.Close
strValue = Mid(strLine, 65, 10)
Set objFile = objFSO.OpenTextFile("Pfad\zu\Hallo.txt", 8)
objFile.Write strLine
objFile.Close
End Sub
<hr>
So könnte ich mir das vorstellen.
Versuch mal ob's funktioniert.
Farmer
Farmer 28.12.2004 um 20:34:12 Uhr
Goto Top
welche Sprache ist das???
geht das auch für die Befehlszeile, also eine .cmd
gemini
gemini 28.12.2004 um 21:00:21 Uhr
Goto Top
Das ist VBScript, die Datei muss die Endung .vbs haben
Du kannst es es als zeitgesteuert als Task starten, von einem anderen Script aus, natürlich auch über die Kommandozeile.
Farmer
Farmer 28.12.2004 um 23:05:07 Uhr
Goto Top
Hallo
habe es jetzt in eine datei namens test.vbs Kopiert.
sieht jetzt so aus:

Option Explicit
On Error Resume Next
Dim objFSO, objFile, s, i, strLine, strValue
i = 165 'Zeile mit dem gesuchten Wert
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\kens.txt", 1)
For i = 0 To i
objFile.SkipLine
Next i
strLine = objFile.ReadLine
objFile.Close
strValue = Mid(strLine, 65, 10)
Set objFile = objFSO.OpenTextFile("c:\test.txt", 8)
objFile.Write strLine
objFile.Close
End Sub

Kens.txt ist die Datei in der gesucht werden soll
Test.txt ist die Datei in der geschrieben werden soll.

beim Doppelklick kommt leider folgender Fehler:
Script:C:\test.vbs
Zeile:9
Zeichen :6
Fehler: Anweisungsende erwartet
Code:800A0401
Quelle: Kompilierungsfehler in Microsoft VBScript
gemini
gemini 29.12.2004 um 14:03:14 Uhr
Goto Top
Versuch mal das hier:

Option Explicit
On Error Resume Next
Dim objFSO, objFile, s, i, strLine, strZeile, strValue
strZeile = 165 'Zeile mit dem gesuchten Wert
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\kens.txt", 1)
For i = 0 To strZeile +1
objFile.SkipLine
i = i + 1
Next
strLine = objFile.ReadLine
objFile.Close
strValue = Mid(strLine, 65, 10)
Set objFile = objFSO.OpenTextFile("c:\test.txt", 8)
objFile.Write strLine & " "
objFile.Close
~~~~~~~~~~
In der test.txt werden die Werte jeweils mit einem Leerzeichen dahinter aneinandergefügt.
Wenn die Werte ersetzt werden sollen musst du statt der 8 eine 2 einsetzen.
Farmer
Farmer 29.12.2004 um 17:26:55 Uhr
Goto Top
Hallo
Dake erstmal für die Anwort.

also die Zeile findet er zwar (muss aber anstatt Zeile 165, Zeile 326 eingeben)
aber dann schreibt er mir die komplette Zeile in die Datei und nicht nur die 10 Zeichen
gemini
gemini 29.12.2004 um 18:29:50 Uhr
Goto Top
Option Explicit
On Error Resume Next
Dim objFSO, objFile, i, strLine, strZeile, strValue
strZeile = 165 'Zeile mit dem gesuchten Wert
i = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\kens.txt", 1)
Do
objFile.SkipLine
i = i + 1
Loop Until i = strZeile
strLine = objFile.ReadLine
objFile.Close
strValue = Mid(strLine, 65, 10)
Set objFile = objFSO.OpenTextFile("c:\test.txt", 8)
objFile.Write strValue & " "
objFile.Close
Set objFSO = Nothing
Set objFile = Nothing
i = 0
strLine = ""
strZeile = ""
strValue = ""

Das hat bei mir einwandfrei funktioniert.
Das vorher die ganze Zeile geschrieben wurde lag an der falschen Variable.
Farmer
Farmer 29.12.2004 um 18:50:12 Uhr
Goto Top
Es funktioniert!!!!!! *g*


vielen Dank für die sehr grosse Hilfe (und Gedult)
gemini
gemini 29.12.2004 um 18:57:42 Uhr
Goto Top
Freut mich face-smile

Sorry wegen der Fehler.
Wenn ich sowas nicht direkt selbst brauche, bin ich etwas faul was das testen anbetrifft face-wink
Ich gelobe Besserung: more test before post

Einen guten Rutsch!!!
Farmer
Farmer 29.12.2004 um 19:05:07 Uhr
Goto Top
ich hätte da noch einen Wunsch

Ist es vielleicht möglich eine Zeile Darunter das aktuelle Datum und Uhrzeit zu setzen.
gemini
gemini 30.12.2004 um 20:32:49 Uhr
Goto Top
Selbstverständlich ist das möglich, ist aber wahrscheinlich besser lesbar wenn Datum/Uhrzeit daneben steht.

Jetzt ist auch etwas Eigeninitiative gefordert face-wink
Wenn du Zeile 16 des Scripts mit der folgenden ersetzt, erhältst du eine Ausgabe in der Form
xxxxxxxxxx - dd.mm.yyyy hh.mm.ss

objFile.WriteLine strValue & " - " & Now
Farmer
Farmer 30.12.2004 um 21:18:33 Uhr
Goto Top
Danke nochmals