Gå til innhold

Anbefalte innlegg

Hei!

 

Har et par batch-filer jeg må endre. Jeg har lite erfaring med dette fra før, men kan en del annen programmering. Det er derfor en del i disse filene jeg ikke helt forstår. Ikke lett å google det heller da det består av mye prosenttegn etc..

 

En av scriptene finner filer som har en viss dato i filnavnet, søker gjennom disse filene etter en bestemt tekst og skriver dette ut til skjerm. Det jeg må endre er hvor den søker og hvilket datoformat den søker etter. Søkestien er grei, datoformatet ble det værre med.

Gammelt format på filnavn er "filnavn_filnavn.xxx_2010.03.19_03.06.08.log". Nytt format er "filnavn_10-03-19-03.06.08.log".

 

Noen som har anledning til å forklare litt rundt denne kodebiten?

 

 

for /f "tokens=1,2,3 delims=-" %%A in ("%date%") do date=%%A-%%B-%%C
rem ***** Search for error in logfiles today ***
for /f %%f in ('dir /b /o:d %bslogspath%\*_%date%-*') do (
 echo ********************* %%f **************************
 rem grep ERROR %bslogspath%\%%f | grep -v %noerror1% | grep -v %noerror2% | grep -v %noerror3%
)

 

hva betyr f.eks. /f %%f /b /o:d..?

Endret av nilsh
Lenke til kommentar
  • 3 uker senere...
Videoannonse
Annonse

Jeg har drever litt med tokens, så jeg tror jeg kan bistå med litt:P

 

Jeg veit ikke hvor nøyaktig du vil ha det forklart, men kan like greit forklare trinn for trinn etter beste evne ;):

 

 

FOR er en funksjon som lar programmet kjøre en/flere kommandoer eller gå gjennom en fil, hente ut et resultat og utføre en kommando ut ifra resultatet:)

 

 

for /f "tokens=1,2,3 delims=-" %%A in ("%date%") do date=%%A-%%B-%%C

 

/f er en version av FOR-kommandoen som lar deg bruke tokens & delims, som angir forskjellige "ledd". Her angir du 3 ledd(tokens): dag, mnd og år og sier at skillet mellom dem er - når den utfører kommandoen %date%, som er å si hvilken dato det er. %%A betyr at token 1 skal hete %%A, token 2 heter %%B osv. Deretter sier den at i variabelen %date% skal det stå dag-mnd-år.

 

rem ***** Search for error in logfiles today ***

REM tror jeg står for Remark, rett og slett kommentar :)

 

for /f %%f in ('dir /b /o:d %bslogspath%\*_%date%-*') do (

echo ********************* %%f **************************

rem grep ERROR %bslogspath%\%%f | grep -v %noerror1% | grep -v %noerror2% | grep -v %noerror3%

)

dir /B bruker rent filnavn(ikke .log). /O:D Lister opp med eldste først. Deretter skal programmet liste opp alle filene for deg (%%f), og til slutt en kommentar (til redigerer..?)

 

 

Jeg fant noen ting som så feil ut, tror for eksempel visning av dato skal endres fra dag.mnd.år til dag-mnd-år. I tillegg bør den nye variabelen være noe annet enn %date%, for en systemvariabel kan ikke erstattes :p Her er mitt forslag, med noen detaljer endret:

 

for /f "tokens=1,2,3 delims=." %%A in ('%date%') do set dato=%%C-%%B-%%A
rem ***** Search for error in logfiles today ***
for %%f in ('dir /b /o:d %bslogspath%\*_%dato%-*') do (
 echo ********************* %%f **************************
 rem grep ERROR %bslogspath%\%%f | grep -v %noerror1% | grep -v %noerror2% | grep -v %noerror3%
)

 

Håper dette var til litt hjelp. Si fra hvis noe er uklart=D

 

Ser nå at det er én ting som ikke stemmer i koden min: nå vil den se etter filer med navnet f.eks. 2010-03-19 og ikke 10-03-19, siden kommandoen %date% gir dd.mm.åååå Men her kan jeg ikke gjelpe for øyeblikket, så noen andre får supplere der :whistle:

Endret av ben_solh
Lenke til kommentar
  • 4 uker senere...

Takk for svar. Utfordringen ble derimot større enn først antatt. Loggene ligger på forskjellige plasser, på forskjellige servere, som er unix. Ble til jeg lagde et sas-program(i og med at jeg jobber i et sas-miljø). Dette kan jeg nå via en stored process bak en URL. Programmet kobler opp mot flere servere, søker etter alle dagens logger på de riktige plasseringene, søker gjennom disse etter 'ERROR' lagrer error-linjen, slår sammen listen og presenterer det i web-form med filnavnene som ftp-linker til filene. Mye jobb for en tilsynelatende enkel oppgave..

 

Eneste problemet nå er at filnavnene inneholder :, så linkene er ikke optimale..

Endret av nilsh
Lenke til kommentar

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...