26. november 2001 - 19:52Der er
11 kommentarer og 1 løsning
lav et sciprt som sletter linier
oki jeg er åbenbart for dum til selv at kunne lave dette. Jeg har en lang række log filer men en masse linier. Jeg mangler et script som kan slette de linier hvor ordet killed ikke indgår efter linie 2.
Jeg giver ikke point for link til sider om ASP file object.
hvad jeg selv har fundet frem til indgår i dette script, men den sletter alle linier og ikke kun den ene hvor order \"killed\" ikke indgår.
Set MyFileObject = Server.CreateObject(\"Scripting.FileSystemObject\") Set MyFolder = MyFileObject.GetFolder(\"C:\\Inetpub\\wwwroot\\statsServer\\newLogFiles\")
Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open \"driver={MySql};dns=csStats;Database=csStats;uid=root;pwd=\"
\' movement ********************************************************************** sql = \"SELECT * FROM frags ORDER BY count DESC LIMIT 0,30\" Set rs3 = Conn.Execute(sql)
Do until rs3.EOF sql = \"UPDATE nicks SET lastposition = \"&i&\" WHERE id =\" &rs3(\"n_id\") Conn.Execute(sql) i = i + 1 Rs3.Movenext Loop \'*********************************************************************************
sql = \"SELECT p.wonid, n.id, n.nick FROM players p, nicks n WHERE p.id = n.p_id \" Set rs = Conn.Execute(sql)
Do until RS.EOF wonid = \"<\"&rs(\"wonid\")&\">\" nick = rs(\"nick\") id = rs(\"id\")
FOR EACH thing in MyFolder.Files numberOfFiles = numberOfFiles + 1
Set MyTextFile = MyFileObject.OpenTextFile(thing,2,true)
\' bestem map og all time best palyer ************************************************
mapid = -1
mapStr = MyTextFile.read(350) sql = \"SELECT * FROM maps\" Set rs4 = Conn.Execute(sql)
do until rs4.EOF mapName = rs4(\"name\") if inStr(mapStr,mapName) <> 0 THEN mapid = rs4(\"id\") alltimeBest = CInt(rs4(\"alltimebestplayer\")) END IF Rs4.Movenext loop
Set rs4 = nothing \'*********************************************************************************************
WHILE NOT MyTextFile.AtEndOfStream str = MyTextFile.ReadLine
start = 0 \'er der et kill start = inStr(str,\"killed\") IF start <> 0 THEN
IF inStr(str, wonid) THEN kill = kill + 1 IF inStr(start, str, wonid) THEN killed = killed + 1 kill = kill -1 END IF END IF \' står der ikke killed slet linie ************************************************************ ELSE MyTextFile.WriteLine \"\"
END IF \'*********************************************************************************************** WEND NEXT
der er tale om en række log filer fra couter strike. Disse skal gennemlæses mange gange og derfor ville det går hurtigere hvis alle de ubrugelige linier blev slettet. Ang. det med linier 2 så er det fordi der i netop linie 2 er noget infor som skal bruges.
hmm....du er nødt til å trikse litt. du kan ikke lese og skrive til samme fil objekt. du er nødt til først å åpne, lese, og deretter åpne og skrive igjen. prøv denne:
Set MyFileObject = Server.CreateObject(\"Scripting.FileSystemObject\") Set MyFolder = MyFileObject.GetFolder(\"C:\\Inetpub\\wwwroot\\statsServer\\newLogFiles\")
Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open \"driver={MySql};dns=csStats;Database=csStats;uid=root;pwd=\"
\' movement ********************************************************************** sql = \"SELECT * FROM frags ORDER BY count DESC LIMIT 0,30\" Set rs3 = Conn.Execute(sql)
Do until rs3.EOF sql = \"UPDATE nicks SET lastposition = \"&i&\" WHERE id =\" &rs3(\"n_id\") Conn.Execute(sql) i = i + 1 Rs3.Movenext Loop \'*********************************************************************************
sql = \"SELECT p.wonid, n.id, n.nick FROM players p, nicks n WHERE p.id = n.p_id \" Set rs = Conn.Execute(sql)
Do until RS.EOF wonid = \"<\"&rs(\"wonid\")&\">\" nick = rs(\"nick\") id = rs(\"id\")
FOR EACH thing in MyFolder.Files numberOfFiles = numberOfFiles + 1
Set MyTextFile = MyFileObject.OpenTextFile(thing,1,true)
\' bestem map og all time best palyer ************************************************
mapid = -1
mapStr = MyTextFile.read(350) sql = \"SELECT * FROM maps\" Set rs4 = Conn.Execute(sql)
do until rs4.EOF mapName = rs4(\"name\") if inStr(mapStr,mapName) <> 0 THEN mapid = rs4(\"id\") alltimeBest = CInt(rs4(\"alltimebestplayer\")) END IF Rs4.Movenext loop
Set rs4 = nothing \'********************************************************************************************* content = \"\" WHILE NOT MyTextFile.AtEndOfStream str = MyTextFile.ReadLine
start = 0 \'er der et kill start = inStr(str,\"killed\") IF start <> 0 THEN
IF inStr(str, wonid) THEN kill = kill + 1 IF inStr(start, str, wonid) THEN killed = killed + 1 kill = kill -1 END IF END IF \' står der ikke killed slet linie ************************************************************ ELSE content = content & str & vbCrLf END IF \'*********************************************************************************************** WEND Set MyTextFile = MyFileObject.OpenTextFile(thing,2,true) MyTextFile.Write content NEXT
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.