PowerShell从CSV中搜索文件并找到输出目录

时间:2019-01-02 05:10:09

标签: powershell

我一直在尝试从此处阅读的内容中整理一个PowerShell脚本,以在目录和子目录中搜索文件名的CSV列表,然后如果找到,则将文件名的目录路径输出到CSV中,或者,如果找不到,则仅在其旁边找不到文件名。

下面是我到目前为止所做的事情,它在一定程度上可以工作,但是并不能“查找”文件,它只是报告所有未找到的文件,即使这些文件在我的测试文件夹中也可以找到。 / p>

Import-Csv -Path files.csv | ForEach-Object {
    Get-ChildItem -File -Recurse $_.filename
    if ($_.filename -eq $_.Name) {
        $_.path = $_.FullName
    } else {
        $_.path = "NOT FOUND"
    }
    $_
} | Select-Object filename,path | Export-Csv -Path output.csv -NoTypeInformation

1 个答案:

答案 0 :(得分:0)

如果在多个文件夹中找到文件怎么办?

  • 存储找到的文件夹,创建一个[PSCustomObject]并将输出分配给变量$Result
  • 结合Lee_Dailey的有用提示

## Q:\Test\2019\01\02\SO_54001484.ps1
$Result = ForEach ($file in (Import-Csv -Path files.csv)){
    $FoundInFolders = (Get-ChildItem $file.filename -File -Recurse ).FullName
    if ($FoundInFolders.Count -eq 0) {
        $FoundInFolders = "NOT FOUND"
    }
    [PSCustomObject]@{
        filename = $file.filename
        path = $FoundInFolders -join ', '
    }
}

$Result #| Export-Csv -Path output.csv -NoTypeInformation

示例输出:

> Q:\Test\2019\01\02\SO_54001484.ps1

filename path
-------- ----
test.cmd NOT FOUND
test.csv Q:\Test\2018\03\20\1\test.csv, Q:\Test\2018\03\20\2\test.csv, Q:\Test\2018\03\20\3\test.csv
test.ps1 Q:\Test\2018\03\31\test.ps1
blabla   NOT FOUND