Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Söka efter text i textfil och sedan radera hela raden med vbs

Postades av 2006-05-01 18:52:19 - Peter Eriksson, i forum visual basic - allmänt, Tråden har 8 Kommentarer och lästs av 782 personer

Hej!
Jag heter Peter och är ny på forumet.
Jag är inte så haj på detta men har förstått att ni är det.
Jag har ett litet problem som jag skulle vilja ha hjälp med.
Jag har en texfil som är full med rader. Vissa av raderna börjar med t ex:
134 lite text lite mer text ännu mer text
2 lite text lite mer text ännu mer text
3 lite text lite mer text ännu mer text
0 lite text lite mer text ännu mer text
134 lite text lite mer text ännu mer text
134 lite text lite mer text ännu mer text

Jag skulle alltså med en *.vbs-fil vilja ha bort alla rader som börjar med 134 och ersätta med ingenting.
Jag har hittat lite "färdiga" script med hjälp av google som gör nästan det jag vill, men inte riktigt ända fram. Något script ersatte endast 134 och lät resten stå kvar
Ett annat gjorde inte ett jota av det jag ville.
Ett tredje stekte hela filen som jag ville modifiera. :/
Jag har föröskt att ändra och greja i scripten själv men förstår mig inte riktigt på vad jag gör :(

Jag vill ha möjligheten att söka med wildcard (*) efter 134 då texten som står efter just 134 inte alltid är samma.

Kan ngn vänlig själ hjälpa mig med detta?
/Peter


Svara

Sv: Söka efter text i textfil och sedan radera hela raden med vbs

Postades av 2006-05-01 19:27:30 - Niklas Jansson

Det enklaste är om du skaffar något editeringsprogram som har stöd för Regular Expressions.

Annars är principen i just ditt fall (om det verkligen är det enkla fallet att det är de första siffrorna):

str = "134"
for alla rader i filen
if not left(raden, len(str)) = str then
skriv raden till ny filen
end if
next


Svara

Sv:Söka efter text i textfil och sedan radera hela raden med vbs

Postades av 2006-05-01 19:39:09 - Peter Eriksson

Ah! Glömde den lilla grejen att detta skall vara helt automatiserat utan mänsklig inblandning.
Så här:
En batch-fil skapar en lista med detta innehåll från Netbackup med nattens backuper.
vidare så sorteras listan för att sedan mailas iväg.
Innan listan mailas iväg så vill jag ta bort ett antal "skräp" rader för att mailet skall se prydligare ut. Detta script skall anropas i batchfilen.

Den kod du skrev säger mig ingenting faktiskt :/

Det jag har experimenterat med är följande:
Code:
option explicit
On Error Resume Next
'Since this was written for Windows Scri
' pting Host,
'it uses VBScript which doesn't use type
' s.
'To use this with VB, as types to the de
' clarations
Dim objFSO 'as FileSystemObject
Dim fle1 'as file
Dim fle2 'as file
Dim strPath 'as String
Dim strFldr 'as String
Dim strLine 'as String


strPath = "C:\temp\crap.txt" 'Put In the file you want To edit
strFldr = "C:\temp\crap2.txt"
Main 'This Calls the Main Sub
Sub Main()
Dim rtn 'as Integer
rtn = CopyStuff() 'This calls and runs the CopyStuff function
if rtn = 1 Then
MsgBox "Copy is complete"
else
MsgBox "An Error was found and the process was aborted. " & Cstr(rtn)
'The & Cstr(rtn) will display the number returned by CopyStuff
'After you've got your script running, you may want To remove this feature
End if
'Cleanup
if Not fle1 is nothing Then Set fle1 = nothing
if Not fle2 is nothing Then Set fle2 = nothing
if Not objFSO is nothing Then Set objFSO = nothing
End Sub
function CopyStuff()
Set objFSO = CreateObject("Scripting.FileSystemObject") 'This creates the FSO
'I've included Error handling after Each step
if err.number <> 0 Then
MsgBox "Error In Creating Object: " & err.number & "; " & err.description
CopyStuff = 0 'Returns this number
Exit function 'Stop processing, go back to Main
End if
if Not objFSO.FileExists(strPath) Then 'The file To copy is not present
MsgBox "The " & strPath & " file was Not found On this computer"
CopyStuff = 2
Exit function
End if
if objFSO.FileExists(strFldr) Then
objFSO.DeleteFile(strFldr) 'If the temp file is found, delete it
End if
Set fle1 = objFSO.OpenTextFile(strPath) 'Open
if err.number <> 0 Then
MsgBox "Error opening " & strPath & ": " & err.number & "; " & err.description
CopyStuff = 3
Exit function
End if
Set fle2 = objFSO.CreateTextFile(strFldr) 'Create the temp file
if err.number <> 0 Then
MsgBox "Error creating temp ini: " & err.number & "; " & err.description
CopyStuff = 4
Exit function
End if





'Here's the work horse that does the copying
Do While Not fle1.AtEndofStream
strline = fle1.ReadLine

If strline like "134%" Then
fle2.WriteLine "testskrift"
Else
fle2.WriteLine strValue
End If






Loop
if err.number <> 0 Then
MsgBox "Error transfering data: " & err.number & "; " & err.description
CopyStuff = 5
fle1.close
fle2.close
Exit function
End if

fle1.close
Set fle1 = nothing
fle2.close
Set fle2 = nothing

'objFSO.DeleteFile strPath, True 'This deletes the original file

objFSO.MoveFile strFldr, strPath 'This moves and renames the temp file, replacing the original
if err.number <> 0 Then
MsgBox "Error replacing " & strPath & " With new file: " & err.number & "; " & err.description
CopyStuff = 6
Else
CopyStuff = 1 'Remember that In Main, a 1 means successful
End if
End function

End Code


Det här scriptet har jag dock sabbat så nu fungerar det inte alls. Det jag ville var att få det att fungera med * efter 134. Jag vill naturligtvis också att den skall ta bort hela raden där 134 finns...
/Peter


Svara

Sv: Söka efter text i textfil och sedan radera hela raden med vbs

Postades av 2006-05-01 22:35:33 - Niklas Jansson

För det första: kan du VB?

Om ja:
Det jag beskrev var pseudokod för hur programmet ska skrivas.
Du öppnar två filer; ena är den du vill använda, andra är den du vill skriva till.
Sen går du igenom den första rad för rad; om raden inte matchas (det kollar du enligt min förra post), så skriver du den till den andra filen, annars hoppar du över den.

Jag har inte tid att sätta mig in i koden du skickade, men någon annan kanske vill göra det. Du borde rimligtvis kunna använda det som står där, om den gör "ungefär" vad du vill.


Svara

Sv:Söka efter text i textfil och sedan radera hela raden med vbs

Postades av 2006-05-02 10:15:18 - Peter Eriksson

Nope! Kan jag inte påstå att jag kan. Det är därför jag vill ha hjälp.
Det som du beskriver har jag förstått att det script jag bifogade här gör, men det når inte ända fram.
Så om ngn annan vänlig själ kan förbarma sig över detta.... snälla!
/Peter


Svara

Sv: Söka efter text i textfil och sedan radera hela raden med vbs

Postades av 2006-05-02 10:41:36 - Martin Adrian

<code=vbscript>
Set fso = CreateObject("Scripting.FileSystemObject")
source = fso.OpenTextFile(FilNamn, 1).ReadAll

With New RegExp
.Pattern = "^134 .*$"
.Global = True
source = .Replace(source, "")
End With

fso.CreateTextFile(NyttFilNamn, True).Write source
</code>


Svara

Sv:Söka efter text i textfil och sedan radera hela raden med vbs

Postades av 2006-05-02 12:17:18 - Peter Eriksson

Hej Martin!
Provade detta, men det fungerade inte?! Eller gör jag fel?
Jag bara kopierade din kod och klistrade in det i en ny fil. Ändrade filnamn, från och till och körde sedan.
No go! :(
Så här:

Set fso = CreateObject("Scripting.FileSystemObject")
source = fso.OpenTextFile("C:\temp\crap.txt", 1).ReadAll

With New RegExp
.Pattern = "^134 .*$"
.Global = True
source = .Replace(source, "")
End With

fso.CreateTextFile("C:\temp\crap2.txt", True).Write source

Den gör en ny fil när jag kör den visserligen, men har inte tagit bort raderna med "134 ... osv"
Filen ser precis likadan ut som från början.

Eller skall jag använda denna kod i den som Jag bifogade ovan?!
/Peter


Svara

Sv: Söka efter text i textfil och sedan radera hela raden med vbs

Postades av 2006-05-02 12:21:25 - Martin Adrian

Kanske 134 följs av en tabb och inte blanktecken.

Prova med "^134\s.*$" istället


Svara

Sv:Söka efter text i textfil och sedan radera hela raden med vbs

Postades av 2006-05-02 12:24:52 - Peter Eriksson

Nu löste jag det till slut. Efter lite googlande och sökande efter regexp så kom jag till slut på vad felet var.
Så här skall det vara:
-----------------------------------------------------------
Set fso = CreateObject("Scripting.FileSystemObject")
source = fso.OpenTextFile("crap.txt", 1).ReadAll

With New RegExp
.Pattern = "134.*"
.Global = True
source = .Replace(source, "")
End With

fso.CreateTextFile("C:\temp\crap2.txt", True).Write source
------------------------------------------------------------------
Tricket låg i "134.*"

Äntligen så gör scriptet det som jag vill. :) Tjohoo!
Stänger tråden som löst.
Tack för all hjälp.
/Peter


Svara

Nyligen

  • 21:28 Chicken Road Casino Game
  • 21:21 1xBet Promo Code 2025
  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game
  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 930
27 965
271 780
1 042
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies