*F* Skrevet 2. juli 2010 Del Skrevet 2. juli 2010 Hei! Sitter her og lager noe greier, ettersom jeg ikke har så mye annet å gjøre atm. Vel. Så sitter jeg litt fast. Jeg skal ha en tekst fil som bat filer skal rapportere til. la oss kalle den rapport.txt Da bruker jeg jo f.eks echo lol >> rapport.txt f.eks. Men, det er ikke porblemet. Jeg vil ha et cmd vindu oppe som automatisk får opp "lol" da, uten at jeg trenger klikke på noe. Det jeg har kommet frem til som en løsning er dav følgende: @echo off :rapportering cls type rapport.txt goto :rapportering Det fungerer fint så lenge filen er liten. Men la oss si at rapport.txt inneholder 50 linjer eller mer, da vil den bruke så lang til til å oppdatere at man nesten ikke ser de nyeste oppdateringene. Den leser altså hele filen hver eneste gang. Er det noen måte jeg klan få den til å lese fra f.eks bunnen og oppover bare 5 nyeste linjer? eller kanskje få den til å fortsette fra der den var kommet sistgang uten å laste hele dokkumentet på nytt? Lenke til kommentar
aklla Skrevet 2. juli 2010 Del Skrevet 2. juli 2010 (endret) Kan sikkert legge inn en litt delay, så den ikke flasher så mye. Denne viser de 6 siste linjene i tekstfilen 123.txt @echo off :start for /f "delims=~" %%a in (123.txt) do set a=%%a for /f "delims=~" %%b in (123.txt) do IF not "%%b"=="%a%" set b=%%b for /f "delims=~" %%c in (123.txt) do IF not "%%c"=="%a%" IF not "%%c"=="%b%" set c=%%c for /f "delims=~" %%d in (123.txt) do IF not "%%d"=="%a%" IF not "%%d"=="%b%" IF not "%%d"=="%c%" set d=%%d for /f "delims=~" %%e in (123.txt) do IF not "%%e"=="%a%" IF not "%%e"=="%b%" IF not "%%e"=="%c%" IF not "%%e"=="%d%" set e=%%e for /f "delims=~" %%f in (123.txt) do IF not "%%f"=="%a%" IF not "%%f"=="%b%" IF not "%%f"=="%c%" IF not "%%f"=="%d%" IF not "%%f"=="%e%" set f=%%f echo %f% echo %e% echo %d% echo %c% echo %b% echo %a% set a= set b= set c= set d= set e= set f= cls goto start Jeg hater slik kode, men det funker da Endret 2. juli 2010 av aklla Lenke til kommentar
*F* Skrevet 2. juli 2010 Forfatter Del Skrevet 2. juli 2010 Fungerte den, men den laster uansett alt selv om man ikke ser det, som ressultarer i at man etter noen hundre linjer nesten ikke ser teksten (flashing) Lenke til kommentar
aklla Skrevet 2. juli 2010 Del Skrevet 2. juli 2010 Fungerte den, men den laster uansett alt selv om man ikke ser det, som ressultarer i at man etter noen hundre linjer nesten ikke ser teksten (flashing) Det kan fikses vet du @echo off :start for /f "delims=~" %%a in (123.txt) do set a=%%a for /f "delims=~" %%b in (123.txt) do IF not "%%b"=="%a%" set b=%%b for /f "delims=~" %%c in (123.txt) do IF not "%%c"=="%a%" IF not "%%c"=="%b%" set c=%%c for /f "delims=~" %%d in (123.txt) do IF not "%%d"=="%a%" IF not "%%d"=="%b%" IF not "%%d"=="%c%" set d=%%d for /f "delims=~" %%e in (123.txt) do IF not "%%e"=="%a%" IF not "%%e"=="%b%" IF not "%%e"=="%c%" IF not "%%e"=="%d%" set e=%%e for /f "delims=~" %%f in (123.txt) do IF not "%%f"=="%a%" IF not "%%f"=="%b%" IF not "%%f"=="%c%" IF not "%%f"=="%d%" IF not "%%f"=="%e%" set f=%%f echo %f% echo %e% echo %d% echo %c% echo %b% echo %a% set a= set b= set c= set d= set e= set f= ping 22.22.22.22 -w 250>nul cls goto start Lenke til kommentar
*F* Skrevet 2. juli 2010 Forfatter Del Skrevet 2. juli 2010 (endret) mhm, ser akseptabelt ut En annen løsning hadde jo vert om man kunne f.eks slette alt utenom 10 siste linjene, om det er mulig da..? Eller om man kan kopiere de 10 siste linjene f.eks til en ny tekst fil, vise tekst filen og deretter slette innholdet i tekstfilen for deretter å kopiere 10 siste linjene til tekstfilen og så vise dem igjen, det hadde kanskje vert en bedre metode? I såfal, hvordan kopiere bare 10 siste linjene? For det scriptet du la ut var litt i overkant rotete med alle IF not-ene Eller kanskje dette kan gjøres lettere? Endret 2. juli 2010 av Dj_Evelen Lenke til kommentar
aklla Skrevet 2. juli 2010 Del Skrevet 2. juli 2010 (endret) Antagelig kan det gjøres lettere, med en eller to virkelig avanserte setninger, men jeg gidder ikke sitte i timesvis å lage noe som gjør det samme, bare ser litt penere ut... Jeg ser ingen umiddelbar bedre måte å gjøre det på, mulig GeirGrusom stikker innom her senere og har noe bedre, om han gidder å lage noe da... CMD/bat er latterlig dårlig på å håndtere tekstfiler. I VB kan det antagelig gjøres en del bedre, men det er ikke mitt felt. Endret 2. juli 2010 av aklla Lenke til kommentar
*F* Skrevet 2. juli 2010 Forfatter Del Skrevet 2. juli 2010 mhm takk for hjelp ihvertfal, jeg får google litt til å se om jeg finner andre alternativer. Lenke til kommentar
*F* Skrevet 2. juli 2010 Forfatter Del Skrevet 2. juli 2010 Fant en grei måte, måtte dog skaffe meg tail.txe fra Windows Server 2003 Resource Kit Tools http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displayLang=en @echo off :rapport cls tail -15 chat.txt goto :rapport Lenke til kommentar
MailMan13 Skrevet 5. juli 2010 Del Skrevet 5. juli 2010 Evt, GNU-style tail/cat/grep/sed/gawk ++ for windows: http://sourceforge.net/projects/unxutils/ Must have for oss som vil ha det beste fra begge verdener. Lenke til kommentar
snippsat Skrevet 6. juli 2010 Del Skrevet 6. juli 2010 (endret) Batch egner seg kun til enkle ting. Python er like enkelt som batch,men 100vis ganger kraftigere. Python er kraftig og moderne programmringspråk,batch er det stikk motsatte. Bare en rask demo av hvordan dette kan løses. ''' #log.txt This is first line. This is second line. This is third line. This is fourth line. This is last line. ''' my_file = open('log.txt').readlines()[-1] print my_file ##This is last line. Som du ser enkelt og greit leser ut siste linje. [-2:]vil lese de 2 siste linjer o.s.v.. Viss man vill skrive til en fil,når log.txt blir for stor. ''' #log.txt This is first line. This is second line. This is third line. This is fourth line. This is last line. ''' #Make a new file,that we write last 2 line to. #This happends if there are more than 3 lines in log.txt file_3 = open('file_3.txt', 'w') my_file = open('log.txt').readlines() if len(my_file) > 3: #More than 3--> lines or what we want. last_2_lines = my_file[-2:] file_3.write(''.join(last_2_lines)) file_3.close() print last_2 ''' #file3.txt This is fourth line. This is last line. ''' Det er også en logging i standar biblioteket. Hvor man kan gjøre alle mulige avanserte logging metoder. Endret 6. juli 2010 av SNIPPSAT Lenke til kommentar
*F* Skrevet 6. juli 2010 Forfatter Del Skrevet 6. juli 2010 (endret) Om noen lurer på hva jeg brukte dette til, så er det et "chatteprogram", som kan finnes hert: http://sorforumet.com/viewtopic.php?f=33&t=323 Ellers, Python ser jo ut som et intressangt språk, har ofte prøvd å lære meg noe nytt, men har liksom gitt opp for raskt. Python ser jo egentlig greit ut Endret 6. juli 2010 av Dj_Evelen Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå