2012-10-08 41 views
2

我陷入了與這種logparser困境的死衚衕。所以沒有其他地方可以去,但在這裏。Logparser:循環過濾多個列表並使用列表值作爲文件名輸出到多個文件

批處理文件(disktrend.bat

@echo off  
pushd "Program Files (x86)\Log Parser 2.2\" 
for /f "tokens=1,2 delims=," %%A in (d:logs\serverdrives.txt) do @logparser -i:tsv file:D:\logs\disktrend.sql?sd=%%A -o:chart -charttype:line > D:\logs\%%B.gif 

SQL文件(disktrend.sql

SELECT date,pfree using to_int(sub(to_real(100),to_real(replace_chr(free,'%','')))) as pfree,replace_chr(strcat(server,drive),':','') AS serverdrive from d:\logs\compiled\*.log where serverdrive =%sd% 

列表文件(serverdrives.txt

'SERV06F',SERV06F 
'SERV00F',SERV00F 

日誌文件的內容示例(* 的.log

Date Server Drive Free Free Space Total 
20120914 SERV06  F: 79.55% 27619.02MB 34719.82MB 
20120914 SERV00  F: 99.73% 34630.37MB 34723.81MB 

當我運行的批處理腳本,我得到以下錯誤:

錯誤

Invalid output filename "" 
Invalid output filename "" 

有誰知道如何解決這個問題?

+1

1;令人耳目一新的用戶構建的問題。希望我能幫忙,但是我畫了一個空白。 – dbenham

+0

感謝恭喜@dbenham。我已經得到了:) –

回答

1

在吃晚飯的時候突然響起了我的一個答案。
我編輯了批處理和SQL文件。
見下文。

批處理文件(disktrend.bat

@echo off  
pushd "Program Files (x86)\Log Parser 2.2\" 
for /f "tokens=1,2 delims=," %%A in (d:logs\serverdrives.txt) do @logparser -i:tsv file:D:\logs\disktrend.sql?sd=%%A+filen=%%B -o:chart -charttype:smoothline -q:off -stats:off 

SQL文件(disktrend.sql

SELECT to_string(date),pfree using to_int(sub(to_real(100),to_real(replace_chr(free,'%','')))) as pfree,replace_chr(strcat(server,drive),':','') AS serverdrive into d:\logs\%filen%.gif from d:\logs\compiled\*.log where serverdrive =%sd% 
相關問題