从列表中搜索关键字(在文件中)并返回完整路径

时间:2015-10-13 20:19:50

标签: powershell batch-file search export

我有一个包含关键字列表的flatfile。我可以格式化这个文件但是需要它。

我想在服务器上搜索关键字,我希望脚本将包含该关键字的所有路径返回到文件。完整路径+文件名会更好。

我需要在满载服务器上找到图像,每次搜索需要30-60秒。我们需要找到大约1000个关键字。因此,如果我可以获得一个可以搜索所有内容并将其报告给excel文件的脚本,例如它可以节省时间。

我的flatfile示例

Product1
Product2
Product3

所需输出文件的示例:

Product1    c:\products\collection1\season2\product1.psd
Product1    c:\products\collection2\season3\product1-back.psd
Product1    c:\products\collection1\rejected\front-product1.txt
Product2    c:\products\collection3\season1\product2-back.pdf
Product3    c:\products\collection2\season4\product3-new.tif

P.S。返回的路径将是\\server\products\collection

之类的UNC路径

2 个答案:

答案 0 :(得分:0)

你的意思是这样的吗?

gc filename.txt | % {gci -path c:\products -filter "*$_*" -recurse} | select FullName | Export-Csv result.csv -Delimiter "`t"

答案 1 :(得分:0)

然后完全写出来并制作一个跟踪结果的对象:

$searchWords = gc c:\filename.txt 
$results = @()
Foreach ($sw in $searchWords)
{
    $files = gci -path C:\products -filter "*$sw*" -recurse | select FullName

    foreach ($file in $files)
    {
        $object = New-Object System.Object
        $object | Add-Member -Type NoteProperty –Name SearchWord –Value $sw
        $object | Add-Member -Type NoteProperty –Name FoundFile –Value $file
        $results += $object
    }

}

$results | Export-Csv result.csv -Delimiter "`t" -NoTypeInformation