正在尝试在日志解析器中使用SUB-SELECT来检索文件夹信息



我的最终目标是在类似于的表中使用日志解析器返回数据

路径数量大小(KB)C: \Path\dir 1200 150223

我可以在脑海中想象这个问题,但我想我遗漏了一些东西。(这可能是显而易见的)。这是我现在的问题:

C:scripts>logparser -i:fs "SELECT f.* FROM (SELECT path FROM C:DOWNLOADS*.* WHERE ATTRIBUTES LIKE 'D%') f"

我收到以下错误:"错误:语法错误::应为FROM关键字而不是令牌'*'"

如果我将代码更改为以下内容,我会得到另一个奇怪的错误。。。

C:scripts>logparser -i:fs "SELECT * FROM (SELECT path FROM C:DOWNLOADS*.* WHERE ATTRIBUTES LIKE 'D%')"

我收到的错误是:"无法打开:在文件夹C:\scripts中搜索文件时出错(SELECT path FROM C:\DOWNLOADS:文件名、目录名或卷标语法不正确。

我想返回c:\downloads路径下不同子目录的大小。我会调整通配符以进一步缩小我的结果。

编辑-更多信息我希望从类似的结构返回数据:

TopFolder|_子文件夹||_SubSubFolder1||_SubSubFolder2||_SubSubFolder3|_其他文件夹

返回一个表格或某种形式的数据,如下所示:

_文件夹名称__数量__平均大小__最大大小__最小大小子文件夹1 250 334533 45000 445子文件夹2 123 4443 2233 344。。。。

首先,LogParser不支持嵌套的SELECT。也就是说,不清楚为什么你需要一个子选择。例如,如果要将目录搜索的深度限制为2,则可以使用'-recurse:2'。另一方面,如果你想汇总一个目录下的所有文件,你需要用EXTRACT_PREFIX选择sum(Size)和GROUP BY,指定级别;例如:

SELECT EXTRACT_PREFIX(Path, 2, '\') AS MyFolder, SUM(Size)
FROM C:Downloads*.*
GROUP BY MyFolder

根据@Gabriele提供的信息,我提出了以下符合我需求的logparser查询。。。

logparser "select EXTRACT_PREFIX(Path,2,'') as FolderName,Count() AS ItemCount,DIV(sum(size),1024) as KBSize from c:downloads*. WHERE Attributes NOT LIKE 'D%' group by FolderName HAVING ItemCount > 1" -i:fs

我的最终目标是收集由自动化流程填充的网络文件夹的统计数据,以跟踪进度。"c:\downloads"源将被更改为其他源。

最新更新