PowerShell脚本,用于遍历CSV目录并将其转换为html

PowerShell脚本,用于遍历CSV目录并将其转换为html,csv,powershell,for-loop,foreach,Csv,Powershell,For Loop,Foreach,这是一个PowerShell问题,不是SharePoint问题 我正在使用脚本获取SharePoint功能、web部件等的清单。它将每种类型的报告输出到csv文件所在的同一目录中。因此,我将在我的计算机上找到一个包含csv文件的目录 我想在第一个脚本之后运行另一个PowerShell脚本,该脚本将这些CSV转换为html文件,以便于阅读报告 我陷入了这样的困境:我将导入每个csv文件,并使用类似的html文件创建每个html文件 这是我到目前为止所拥有的。有人能帮我完成这件事吗?要使用导入C

这是一个PowerShell问题,不是SharePoint问题

我正在使用脚本获取SharePoint功能、web部件等的清单。它将每种类型的报告输出到csv文件所在的同一目录中。因此,我将在我的计算机上找到一个包含csv文件的目录

我想在第一个脚本之后运行另一个PowerShell脚本,该脚本将这些CSV转换为html文件,以便于阅读报告

我陷入了这样的困境:我将导入每个csv文件,并使用类似的html文件创建每个html文件

这是我到目前为止所拥有的。有人能帮我完成这件事吗?要使用导入CSV,我必须指定文件名,正如您在$dir中看到的那样。还有别的办法吗

$dir = "C:\Users\me\Desktop\output\TestInvSiteCollections.csv"

dir -LiteralPath $dir | % {Import-Csv $dir}
或者以某种方式使用这个

Import-Csv -LiteralPath $dir  | ConvertTo-Html | Out-File "C:\Users\me\Desktop\output\myhtmlfile.html"

这是你的密码。它应该拆分文件名并添加扩展名

Import-Csv -LiteralPath $dir  | ConvertTo-Html | Out-File ($dir.Split(".")[0]+".html")

我会这样做:

Get-ChildItem -Path 'C:\Users\me\Desktop\output\*.csv' | ForEach-Object {
    Import-Csv $_ | ConvertTo-Html | Out-File -FilePath (Join-Path -Path $_.DirectoryName -ChildPath ($_.BaseName + '.html'));
}

我不完全确定我觉得html表格比csv文件更容易阅读。Excel的筛选和排序太有用了。

这是一种稍微详细一点的方法,但为了便于维护,我通常更喜欢可读的代码,而不是简洁的代码:

#get the list of csv files
$csvFiles = Get-ChildItem $path -Filter *.csv

foreach ($file in $csvFiles)
{
    #create FileInfo object
    [System.IO.FileInfo]$fileInfo = "$path\$file"

    #Get base name of file
    $baseName = [System.IO.Path]::GetFileNameWithoutExtension($file.Name)

    #do HTML conversion
    Import-Csv $fileInfo.FullName | ConvertTo-Html | Out-File "$htmlPath\$baseName.html" 
}

假设您在某个地方定义了$path,并且显然可以根据您的需要进行修改,那么这就是工作代码。

这就是我从中获取脚本的地方。由于数据原因,我无法发送确切的文件,但它在csv文件中显示为一堆杂乱的文本。。没有列或任何格式。HTML文件使其可读。。我很想知道怎么做顺便说一句,我可以通过进入Excel,选择A列,进入数据选项卡,文本到列,用逗号分隔,将csv文件中的数据分成列。如果上次使用文本分隔列时没有选择逗号,Excel似乎忘记了逗号在CSV中分隔字段。它试图变得聪明,结果只是前后矛盾。是的。我没有把它选中,也不明白为什么它没有把它放到列中。。但无论如何,这是一个有趣的练习。