Gå til innhold

Lese av deler av txt fil?


Anbefalte innlegg

Skrevet

Jeg har fikset noen programmer og alle fungerer.. Men jeg skulle gjerne kunne legge alle mine "imtromeldinger" inn i en tekstfil og få batch en til og kun vise linje 1-5 og 6-12 for eksempel. Jeg ønsker ikke å legge alt i et batch for da blir det bare rot. Lar det seg gjøre?

Videoannonse
Annonse
Skrevet

Ikke bat-vil, men vbs-fil. Det er noe vanskeligere å lære seg en bat, men er mye mer effektivt og kan glatt lese av kun gitte linjer i en tekstfil.

 

Men som sagt, har du ikke vært borti programmering før, så må du lære deg det helt grunnleggende først.

Skrevet (endret)
Går det da an og få en vbs til og lese av en del av tekst-filen og printe det i cmd?

8520512[/snapback]

 

Ja.

 

 

cscript MinVBS.vbs MinTekstFil 2 4

 

 

MinVBS.vbs:

set fso = CreateObject("Scripting.FileSystemObject")
set file = fso.OpenTextFile( wscript.arguments(0) )
counter = 1
While file.AtEndOfStream = false
s = file.ReadLine()
if counter >= cInt(wscript.arguments(1)) then
 WScript.Echo s
end if
if counter > cInt(wscript.arguments(2)) then
 file.close
 wscript.quit
end if
counter = counter + 1
Wend
file.Close
set fso = nothing

Endret av jorn79
Skrevet
Går det an og gjøre det samme bare at man erstatter linje xx?

8562383[/snapback]

Da er man tilbake til vbs-filer igjen. Det er ikke helt lettvindt heller da, men fullt mulig. Har gjort det selv.
Skrevet (endret)
Går det an og gjøre det samme bare at man erstatter linje xx?

8562383[/snapback]

 

Håper dette virker... har ikke testet... :)

 

 

cscript MinVBSReplace.vbs MinTekstFil 6 Linje 6 erstattes med dette

 

 

MinVBSReplace.vbs:

set fso = CreateObject("Scripting.FileSystemObject")
set file = fso.OpenTextFile( wscript.arguments(0) )
LineNumber = wscript.arguments(1)
LineReplace = ""
For i = 2 to ubound(wscript.arguments)
  LineReplace = LineReplace & WScript.Arguments(i) & " "
next

counter = 1
While file.AtEndOfStream = false
s = file.ReadLine()
if counter <> LineNumber then
WScript.Echo s
Else
 WScript.Echo LineReplace
end if
counter = counter + 1
Wend
file.Close
set fso = nothing

Endret av jorn79
Skrevet

Den var det noe feil med..

 

C:\Documents and Settings\**\Skrivebord\Replace.vbs(5, 1) Microsoft VBScript-k

jøretidsfeil: Feil antall argumenter eller ugyldig tilordning av egenskap

Skrevet

Det er mulig med bat-script også.

 

Start cmd.exe med /V:ON switchen for å aktivere delayed environment expansion:

 

cmd /V:ON

 

Kjør følgende script på en en text.txt fil med ca 10 linjer:

 

set maxLines=4

for /f "delims= skip=3" %%i in (text.txt) do (
   if !maxLines!==0 (
     rem
   ) else (
     set /A maxLines-=1
     echo %%i
   )
 )

Linje 4-8 vil da skrives ut. Pent er det kanskje ikke, men det er mulig. Og kanskje noen har en bedre og enklere løsning?

Skrevet
Går det an og gjøre det samme bare at man erstatter linje xx?

8562383[/snapback]

Prøv denne:

'On Error Resume Next

Const ForReading = 1, ForWriting = 2

 

If WScript.Arguments.Count < 2 Then

    ThrowError "The syntax of the command is incorrect."

End If

 

' Hent argumenter

FilePath = Wscript.Arguments(0)

iLine = Fix(WScript.Arguments(1))

If WScript.Arguments.Count >= 3 Then _

Text = WScript.Arguments(2)

 

Set FSO = CreateObject("Scripting.FileSystemObject")

Set File = FSO.OpenTextFile(FilePath, ForReading)

 

If File Is Nothing Then _

ThrowError "File not found."

 

' Hent alle linjer

aLines = Split(File.ReadAll, vbNewLine)

 

' Lukk fil

File.Close

 

' Utfør endring

If iLine >= LBound(aLines) And iLine <= UBound(aLines) Then

    aLines(iLine) = Text

Else

    ThrowError "Index is out of bounds."

End If

 

' Oppdater endring

FSO.DeleteFile FilePath

Set File = FSO.CreateTextFile(FilePath, True)

File.Write Join(aLines, vbNewLine)

 

' Rydd opp

File.Close

Set FSO = Nothing

Set File = Nothing

 

Sub ThrowError(Message)

    WScript.Echo Message

    WScript.Quit

End Sub

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...