/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
konvertering af .logfil udseende via progr~
Fra : Heine Christensen


Dato : 25-02-03 11:02

Hej

Sagen er at jeg skal have konverteret en .log fil fra et format til et
andet.

Inputfilen(flad tekstfil) ser såledet ud:

0 25.00

Hvor nul er nummeret på temperaturføleren, denne er ligegyldigt, herefter
kommer det en <TAB> og så kommer selve temperaturen som jeg skal bruge.

Formatet jeg skal have denne ud i/ændret til er følgende, hvis temperaturen
er positiv

25.00
0
0
0

og hvis den er negativ

0
25.00
0
0

Hvad gør jeg? ydermere vil det være fedt hvis jeg kunne få det lavet således
at de to sidste 0 i output filen kunne bestemmes med en parameter eller
lign....Jeg har fundet en løsning hvis vi snakker asp, men ikke så fedt at
skulle starte en IE for at køre scriptet hvert 5 minut

Jeg skal nemlig have talene ind i MRTG og den kræver de 4 tal.
Det første ciffer er til den første graf, nr 2 til den anden og nr 3 og 4 er
navn på enheden og uptime. Derfor rart hvis man kunne ændre disse i en evt
programstump

Er der en venlig sjæl som lige har styr på noget delphi, VB eller lign, og
som har 5 min til at kigge på det.... som inspiration kan i evt se asp filen
som kan klare dette?

På forhånd tak
Heine Christensen



 
 
Tomas Christiansen (25-02-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 25-02-03 14:19

Heine Christensen skrev:
> Hej

Selv hej.

> Sagen er at jeg skal have konverteret en .log fil fra et format til
et
> andet.

Da det er en ret simpel konvertering, og da du vist ikke har det store
kendskab til VB, og sådan noget altså på ét eller tidspunkt skal laves
om, er det måske en íde at kigge på noget fortolket i stedet for noget
kompileret.

Hvis du bruger Windows 2000 (virker formentlig også i XP), kan du
f.eks. oprette en fil temp.bat med følgende indhold:

@Echo off
SetLocal
Set OptPar=0
If not '%1'=='' (Set OptPar=%1)
For /f "tokens=1,2" %%a in (ind.log) do (
For /f "tokens=1 delims=0123456789." %%t in ("*%%b") do (
If '%%t'=='*-' (
echo 0
echo %%b
echo %OptPar%
echo %OptPar%
) Else (
echo %%b
echo 0
echo %OptPar%
echo %OptPar%
) ) )
EndLocal

Nu kan du kalde temp.bat med angivelse af din inputfil, og du kan
redirigere output ud i en logfil eller undlade redirigering, hvorved
det kommer på skærmen, f.eks.
temp ind.log
temp ind.log >ud.log

Du kan også angive hvad der skal stå i de 3. og 4. linie i output,
f.eks. hvis du ønsker at der skal stå 777:
temp ind.log 777 >ud.log

-------
Tomas


Heine Christensen (26-02-2003)
Kommentar
Fra : Heine Christensen


Dato : 26-02-03 02:57


"Tomas Christiansen" <toc-nospam-01@blikroer.dk> skrev i en meddelelse

> @Echo off
> SetLocal
> Set OptPar=0
> If not '%1'=='' (Set OptPar=%1)
> For /f "tokens=1,2" %%a in (ind.log) do (
> For /f "tokens=1 delims=0123456789." %%t in ("*%%b") do (
> If '%%t'=='*-' (
> echo 0
> echo %%b
> echo %OptPar%
> echo %OptPar%
> ) Else (
> echo %%b
> echo 0
> echo %OptPar%
> echo %OptPar%
> ) ) )
> EndLocal

Okay, ser sq godt ud

> Du kan også angive hvad der skal stå i de 3. og 4. linie i output,
> f.eks. hvis du ønsker at der skal stå 777:
> temp ind.log 777 >ud.log

Tak, nu kan jeg selv justere lidt ind på det.......fedt at jeg slap for at
skulle have noget kompileret, dette her er perfekt da jeg nu selv kan ændre
lidt i det...

Endnu engang tak!

HC

Btw. jeg vidste sq ikek man kunne så meget i .bat filer



Heine Christensen (26-02-2003)
Kommentar
Fra : Heine Christensen


Dato : 26-02-03 03:10

Øhmm... lige en lille ting, er det mon muligt at fjerne . fra output,
således at 25.01 bliver til 2501?

Ellers et simpelt men yderst brugbart "script"... thnx endnu en gang

HC



Tomas Christiansen (26-02-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 26-02-03 08:02

Heine Christensen skrev:
> Øhmm... lige en lille ting, er det mon muligt at fjerne . fra
output,
> således at 25.01 bliver til 2501?

Ja, og jeg kan se at jeg vist ikke har publiseret den rigtige version
af bat-filen, idet du ikke får lov til at angive input-filens navn på
kommando-linien. Det er fixet i scriptet nedenfor.

Ang. at 25.01 skal blive til 2501. Det er meget fint, men hvad så med
40.1 og 4.01. Skal de begge blive til 404? Eller er der altid 4 cifre
(2 før og 2 efter ".")?
Hvis det sidste er tilfældet, er ikke det noget problem:

@Echo off
SetLocal
Set OptPar=0
Set Comma=
If not '%2'=='' (Set OptPar=%2)
If not '%3'=='' (Set Comma=%3)
For /f "tokens=1,2" %%a in (%1) do (
For /f "tokens=1,2 delims=." %%x in ("%%b") do (
For /f "tokens=1 delims=0123456789." %%t in ("*%%b") do (
If '%%t'=='*-' (
echo 0
echo %%x%Comma%%%y
echo %OptPar%
echo %OptPar%
) Else (
echo %%x%Comma%%%y
echo 0
echo %OptPar%
echo %OptPar%
) ) ) )
EndLocal

Bemærk at jeg har indført en tredie parameter, som angiver hvilket
decimalskilletegn som skal bruges. Angives intet udelades
skilletegnet.
Hvis du ønsker f.eks. "." som decimalskilletegn, kan du kalde temp.bat
således:

temp ind.log 0 . >ud.log

Og ja, batch-programmering ligner efterhånden BASIC en del (med tryk
på LIGNER).

-------
Tomas


Heine Christensen (26-02-2003)
Kommentar
Fra : Heine Christensen


Dato : 26-02-03 10:21


"Tomas Christiansen" <toc-nospam-01@blikroer.dk> skrev i en meddelelse

> Og ja, batch-programmering ligner efterhånden BASIC en del (med tryk
> på LIGNER).

hehe

Tak igen, det ruller perfekt!

HC



Heine Christensen (26-02-2003)
Kommentar
Fra : Heine Christensen


Dato : 26-02-03 19:43

"Heine Christensen" <hc@teamhm.dk> skrev i en meddelelse

> Tak igen, det ruller perfekt!

Ups, jeg var for tidligt ude, når temperaturen er -1.00 skrives der -100 i
linie 2, det skulle have bare have været 100, altså uden -

Har du stadig 2 min til at kiige på det

HC



Tomas Christiansen (26-02-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 26-02-03 22:53

Heine Christensen skrev:
> Ups, jeg var for tidligt ude, når temperaturen er -1.00 skrives
der -100 i
> linie 2, det skulle have bare have været 100, altså uden -

Prøv dette (bemærk at du nu har mulighed for at angive default navn på
input-logfilen):

@Echo off
SetLocal
Set InFile=angiv_default_filnavn.log
Set OptPar=0
Set Comma=
If not '%1'=='' Set InFile=%1
If not '%2'=='' Set OptPar=%2
If not '%3'=='' Set Comma=%3
For /f "tokens=1,2" %%a in (%InFile%) do (
For /f "tokens=1,2 delims=." %%x in ("%%b") do (
For /f "tokens=1,* delims=-" %%m in ("*%%x%Comma%%%y") do (
If '%%m'=='*' (
echo 0
echo %%n
echo %OptPar%
echo %OptPar%
) Else (
echo %%x%Comma%%%y
echo 0
echo %OptPar%
echo %OptPar%))))
EndLocal

-------
Tomas


Heine Christensen (27-02-2003)
Kommentar
Fra : Heine Christensen


Dato : 27-02-03 02:31

"Tomas Christiansen" <toc-nospam-01@blikroer.dk> skrev i en meddelelse

> Prøv dette (bemærk at du nu har mulighed for at angive default navn på
> input-logfilen):

Er hermed gjort, og ja det spiller sq....du kører klatten må jeg
sige....mega mange tak... nu tror jeg heller ikke der er mere at komme
efter, jeg vil god lige lade den køre på min MRTG natten over.

Så poster jeg lige det som jeg kører med i in helhed, så kan du også se de
småændringer jeg har tilføjet....

btw, er der ikek et sted på nettet hvor programmerings-newbies som mig kan
læse lidt om dette, jeg er ikek interesseret i VS, Delphi osv....mere .bat,
det har jeg sq brug for engang imellem.....Jeg har rodet ASP, og fatter godt
hvordan det virker... Så hvis du har nogle link til noget materiale ville
det være perfekt...

HC -> Going down



Tomas Christiansen (27-02-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 27-02-03 09:24

Heine Christensen skrev:
> Så poster jeg lige det som jeg kører med i in helhed, så kan du også
se de
> småændringer jeg har tilføjet....

Fint!

> btw, er der ikek et sted på nettet hvor programmerings-newbies som mig
kan
> læse lidt om dette, jeg er ikek interesseret i VS, Delphi osv....mere
..bat,
> det har jeg sq brug for engang imellem.....

Prøv at spørge i dk.edb.programmering (hvor vi i virkeligheden burde
have fortsat vores kommunikation).
Hvis jeg har brug for at vide noget om batch-programmering, starter jeg
en kommando-prompt og bruger følgende kommandoer til at give mig hjælp:

HELP|MORE
FOR /? (eller HELP FOR)
HELP SET
HELP IF
HELP CMD

HELP CMD giver hints til at læse hjælpen for SET, IF, FOR, SETLOCAL, ...
som kan være ret interessante mhp. batch-programmering.

-------
Tomas


Heine Christensen (28-02-2003)
Kommentar
Fra : Heine Christensen


Dato : 28-02-03 01:36

Som lovet, en udskrift af min opsætning.
Jeg er dog kommet til at se at mine følere er for "billige/små", så de
springer ½ grad pr trin, så dem skal jeg lige have skiftet....ellers er det
perfekt, softwaren køre uden probs.

Her er min .bat fil som kaldes fra MRTG.

@echo off
REM %1 = Føler nummer
REM %2 = Tekst i linie 4
REM %3 = Tegn som skal erstatte komma

C:
CD \MRTG\BIN

REM Her slettes den gamle logfil
del %1.log

REM Her aflæses følerne
digitemp -s1 -t%1 -o2 -l%1.log >nul:

REM Her hentes data fra logfil og udskrives til MRTG
SetLocal
Set OptPar=0
Set Comma=
If not '%2'=='' Set OptPar=%2
If not '%3'=='' Set Comma=%3
For /f "tokens=1,2" %%a in (%1.log) do (
For /f "tokens=1,2 delims=." %%x in ("%%b") do (
For /f "tokens=1,* delims=-" %%m in ("*%%x%Comma%%%y") do (
If '%%m'=='*' (
echo 0
echo %%n
echo 0
echo %OptPar%
) Else (
echo %%x%Comma%%%y
echo 0
echo 0
echo %OptPar%))))
EndLocal


HC



Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste