为每个子目录写一个包含信息的单独文件(csv)



我有一种情况,我需要为每个文件夹写一个输出文件,每个文件夹中包含数据/信息。

文件夹/目录结构:

C:Logs15SecRef.DataMonthLog.JanDay.1
~Month~ have folders up to Log.Dec
~Log.Jan~ has a folder for 30/31 Days in a month
~Day.1~ has files with data  

我能做到的:

我可以使用一个脚本在一个月的所有日子读取数据,并可以将信息写入CSV文件。感谢@zett42。

在给定的文件夹/目录结构下可以正常工作-

C:Logs15SecRef.DataMonthLog.Jan

脚本:

$targDir = "C:Logs15SecRef.DataMonth";
$subDir = $(Get-ChildItem "$targDir" –Directory );
foreach($sub in $subDir) {
Get-ChildItem -Path $sub –Recurse *.log | 
Select-Object -Property @(
'FullName'
@{ Name = "LineCount"; Expression = { 
(Get-Content -Path $_.FullName | Select-Object -Skip 8 | Measure-Object).Count
}} 
) |
Export-Csv C:testoutput.csv -NoTypeInformation
}

问题:

当尝试在更高的文件夹/目录结构下运行脚本时,即

C:Logs15SecRef.DataMonth

脚本只写入Month中最后一个文件夹的Output文件,例如Log.May。所有其他文件夹(日志。1月,日志。2月等日的信息将不予填写。我不知道如何做到这一点,也无法在互联网上找到正确的帮助。

期望:每个月都有一个单独的文件,带有月份的名称(Log.Jan.csv, Log.Feb.csv)。

您的脚本目前每个月都会写入的输出,但也会在每次循环迭代时重写它—这就是为什么您只能看到上个月的数据。因此,您只需要更新输出路径,以便从当前月份的目录中获取名称。

将导出定义更改为:

Export-Csv "C:test$($sub.Name).csv" -NoTypeInformation

相关内容

最新更新