Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 28 odgovora
  • 9.679 pregleda

Najnovija ↓

Re: "Izvlačenje" podataka iz tekstualnih fajlova? 29.08.2004. u 16:54 · pre 269 meseci #21
Probaću ponovo, a sutra ću da uploadujem primer fajla, pa da vidimo konkretno na primeru.

Ponovo hvala,

P.s. ne bih hteo da ova moja tema služi kao razlog međusobnih prepirki, ali SVAKA pomoć mi je dobrodošla.
Re: "Izvlačenje" podataka iz tekstualnih fajlova? 29.08.2004. u 17:05 · pre 269 meseci #22
Inače, pošto imaš tako velik broj fajlova, a VBScript usporava, verovatno zbog podizanja Cscript.exe (ne vidim šta drugo), ako ti Perl nije prihvatljiv, moraćeš da malo prepraviš onu moju skriptu tako da sama nalazi fajlove. Ne bi trebalo biti teško (hint: FSO).

Pozdrav

UPDATE:
Evo rašo, da ne bude da sam te ostavio na cedilu skroz :)

Citat:
Set fso = CreateObject("Scripting.FileSystemObject")
Do While Not WScript.StdIn.AtEndOfStream

InputFile = WScript.StdIn.ReadLine
Set f = fso.OpenTextFile(InputFile, 1)
Input = f.ReadAll
f.Close

Set regEx = New RegExp
regEx.Pattern = "STRINGSTART.*?STRINGEND"
regEx.IgnoreCase = False
regEx.Global = True

Set objMatches = regEx.Execute(Input)
For Each objMatch in objMatches
s = ObjMatch.Value
s = Replace(s,"STRINGSTART", "")
s = Replace(s,"STRINGEND", "")
WScript.Stdout.Write s & ","
Next
Loop


I teraj sa:

dir /s /b *.txb | cscript //nologo skripta.vbs >> izlaz.txt

Trebalo bi da je brže od onog prvog. Stvar je, kao što sam i napisao, što se svaki put podizao cscript, a ovako smo to sveli na samo jedno podizanje. Nije šampion brzine, ali mislim da je prihvatljivo. Vidi sam.

Ako nije dovoljno brzo, kupi brži kompjuter, lakše ti nego da učiš Perl :))) ili da čekaš čitav dan da se neko igra i testira pa onda poredi to sa nečim što sam ja postavio nakon 10 minuta.

(Primećujem da je i Časlav uradio isto, koristio je find, za razliku od prošlog puta gde je koristio baš For petlju. Zato je verovatno njegovo rešenje i kasnilo malo :) Pošteno, nema šta. Časlave, za ovakvo nepošteno poređenje, imaš od mene lično crveni karton za duže. Ja takvo što ne bih uradio ni na Advocacy forumu).


[Ovu poruku je menjao degojs dana 29.08.2004. u 14:30 GMT]
Potpis
Commercial-Free !!!
Re: "Izvlačenje" podataka iz tekstualnih fajlova? 29.08.2004. u 17:58 · pre 269 meseci #23
@dgojs

radi, radi!!!

ali sada shvata specifičnost slučaja.
Recimo ovako. Startstring mi se nalazi u redu iznad recorda koji bih da "izvučem" što dovodi do "izvlačenja" jednog nepotrebnog reda.

Postavimo pitanje ovako. Da li je moguće (pošto sam već rekao da je forma dokumenata uvek ista) (recimo da uvek ima 65 reda sa po 70 znakova) da se izvuče record sa određene pozicije. Recimo da izvlači uvek rekord koji se nalazi u 8 redu na poziciji od 60 do 70 (znači samo ta 10 slova), zatim da izvlači rekord iz 12 reda na 15-25 poziciji (znači opet 10 slova)


Hvala Vam na utrošenom vremenu
Re: "Izvlačenje" podataka iz tekstualnih fajlova? 29.08.2004. u 18:14 · pre 269 meseci #24
Code:
Set fso = CreateObject("Scripting.FileSystemObject")
Do While Not WScript.StdIn.AtEndOfStream

InputFile = WScript.StdIn.ReadLine
Set f = fso.OpenTextFile(InputFile, 1)

For i = 1 to 7
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,61,10)
WScript.Stdout.Write Text & ","
For i=9 to 11
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,16,10)
WScript.Stdout.Write Text & ","
f.Close
Loop


A poterao bi sa:
dir /s /b *.txb | cscript //nologo skripta2.vbs >> izlaz2.txt

Nisam ni ovo testirao, nego sa jednim fajlom :) Inače, malčice sam promenio ono prethodno, tako da budeš siguran da imaš zadnju verziju skriptice :)

Ima nešto što nije jasno: kad kažeš pozicije 60-70, to nije 10 već 11 znakova. 60, 61, 62, .. 70.
Isto za pozicije 15-25, to je 11 znakova: 15,16,17..25.

Ja sam u skripti stavio 61 i 16 za početne znakove i čitam 10 znakova.
Lako ćeš naći gore u skripti te brojeve (61 i 16) i promeniti ih u ono što treba. Broj koji sledi iza (10 u oba slučaja) je koliko znakova čitamo.

Opet, nije šampion brzine, ali mislim da služi OK.

Pozdrav.

[Ovu poruku je menjao degojs dana 29.08.2004. u 14:19 GMT]
Potpis
Commercial-Free !!!
Re: "Izvlačenje" podataka iz tekstualnih fajlova? 29.08.2004. u 18:31 · pre 269 meseci #25
hmm, upravu si stavrno je 11 znakova....
U svakom slučaju hvala na brzom odgovoru, a sad je red na meni da eksperimentišem, a sutra ću da probam već na konkretnom primeru (pošto su mi fajlovi na poslu).


Hvala još jednom.
Re: "Izvlačenje" podataka iz tekstualnih fajlova? 29.08.2004. u 20:55 · pre 269 meseci #26
Radi zaključenja poređenja, drugo Dejanovo rešenje je sasvim zadovoljavajuće, treba mu svega 26 sekundi (pod istim onim uslovima). Imao bih tu još ponešto da kažem, ali ne bi bilo u redu zatrpavati ovu temu, to ću lično sa „sudijom“ Gojsevićem :)
Re: "Izvlačenje" podataka iz tekstualnih fajlova? 22.09.2004. u 15:34 · pre 269 meseci #27
Opet ja posle nekog vremena
Konačno sam uspeo da napravim nešto što bi mi bilo od koristi (naravno uz veliku vašu pomoć) Skript izgleda ovako:


Citat:


Set fso = CreateObject("Scripting.FileSystemObject")
Do While Not WScript.StdIn.AtEndOfStream

InputFile = WScript.StdIn.ReadLine
Set f = fso.OpenTextFile(InputFile, 1)

For i = 1 to 3
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,77,2)
WScript.Stdout.Write Text & ";"

For i = 4 to 4
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,4,31)
WScript.Stdout.Write Text & ";"
Text = Mid(Input,46,66)
WScript.Stdout.Write Text & ";"
For i = 5 to 5
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,28,10)
WScript.Stdout.Write Text & ";"
Text = Mid(Input,68,10)
Wscript.Stdout.Write Text & ";"
For i = 6 to 6
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,46,7)
WScript.stdout.Write Text & ";"
Text = Mid(Input,69,10)
WScript.stdout.Write Text & ";"
For i = 7 to 7
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,68,12)
WScript.stdout.Write Text & ";"
For i = 8 to 8
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,16,55)
WScript.stdout.Write Text & ";"
For i = 9 to 14
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,18,3)
WScript.stdout.Write Text & ";"
Text = Mid(Input,40,17)
WScript.stdout.Write Text & ";"
Text = Mid(Input,69,10)
WScript.stdout.Write Text & ";"
For i = 16 to 20
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,58,8)
WScript.Stdout.Write Text & ";"
Text = Mid(Input,69,10)
WScript.Stdout.Write Text & ";"
For i = 21 to 26
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,27,10)
WScript.Stdout.Write Text & ";"
Text = Mid(Input,46,10)
WScript.Stdout.Write Text & ";"
Text = Mid(Input,63,20)
WScript.Stdout.Write Text & ";"
For i = 27 to 40
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,11,3)
WScript.Stdout.Write Text & ";"
f.Close
Loop



I pokrećem ga sa

dir /s /b *.txt | cscript.exe /nologo skript.vbs >> izlaz.txt

E sad, on od svih tekstualnih fajlova lepo izvlači podatke, ali ih "lepi" u nastavku.
Ono što meni treba je da svi podaci iz jednog fajla budu u jednom redu, a kad počne da izvlači iz drugog fajla, da krene u sledeći red...
Unapred zahvalan[/quote]
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme