我一直在尝试从此处阅读的内容中整理一个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
答案 0 :(得分:0)
如果在多个文件夹中找到文件怎么办?
$Result
## 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