这是我想要做的:
我有一大堆各种格式的文件(大约一万个)。每个文件都可以定义为某种类型(例如:产品表、商业计划、报价、演示文稿等)。这些文件没有特定的顺序,不妨将其视为一个列表。我有兴趣按类型创建目录。
这个想法是,对于某种格式和某种类型,我知道要在文件内容中查找哪些关键字。我想要一个 powershell 脚本,它基本上执行一系列脚本,查找包含特定关键字的特定格式的所有文件,并将每个列表输出到单独的 csv。这里的关键点是关键字将在内容(pdf 的正文、excel 的单元格等)中,而不是在文件名中。到目前为止,我已经尝试了以下方法:
get-childitem -Recurse | where {!$_.PSIsContainer} |
select-object FullName, LastWriteTime, Length, Extension | export-csv -notypeinformation -delimiter '|' -path C:\Users\Uzer\Documents\file.csv -encoding default
Run Code Online (Sandbox Code Playgroud)
这很好,并为我提供了完整的文件列表,包括它们的大小和扩展名。我正在寻找类似但按内容过滤的东西。有任何想法吗?
编辑:基于她下面的解决方案的新代码:
$searchstring = "foo"
$directory = Get-ChildItem -include ('*.pdf') -Path "C:\Users\Uzer\Searchfolder" -Recurse
foreach ($obj in $directory)
{Get-Content $obj.fullname | Where-Object {$_.Contains($searchstring)}| select-object FullName, LastWriteTime, Length, Extension | export-csv -notypeinformation -delimiter '|' -path C:\Users\Uzer\Documents\file2.csv -encoding default}
Run Code Online (Sandbox Code Playgroud)
但是我收到了一堆这些错误:
An object at the specified path C:[blabla]\filename.pdf does not exist, or has been filtered by …Run Code Online (Sandbox Code Playgroud)