我目前正在尝试编写一个执行以下操作的 powershell 脚本:
- 浏览脚本所在目录中的所有 PDF 文件
- 检查这些 PDF 文件的前几个字节
- 如果这些字节表示类似“PK”的内容,请将它们移动到其他位置
- 如果字节表示其他内容(例如:PDF1.4),请完全不要移动它们并转到下一个。
上下文:我们有大约 70k 个 PDF 文件无法打开。用某种工具检查后,看起来大约 99% 的文件已损坏,剩下的 1% 是 zip 文件。 例如,压缩 PDF 文件的第一个字节以“PK”开头,损坏的 PDF 文件的第一个字节以 PDF1.4 开头。 我需要解压所有 zip 文件并重新定位它们。手动浏览 70k PDF 文件有点痛苦,所以我正在寻找一种自动化的方法。
我知道我应该提供一个代码示例,但事实是我完全迷失了。我之前写过一些powershell脚本,但我不知道如何做这样的事情。
所以,如果有人能指出我正确的方向或给我一个有用的功能,我将非常感激。
最佳答案
您可以使用 Get-Content
按照您的要求获取前 6 个字节。
然后,我们可以将其绑定(bind)到所有文档的循环中,并配置一个简单的 if 语句来决定下一步做什么,例如将文件移动到另一个目录
根据您的评论进行编辑:
$pdfDirectory = 'C:\Temp\struktur_id_1225\ext_dok'
$newLocation = 'C:\Path\To\New\Folder'
Get-ChildItem "$pdfDirectory" -Filter "*.pdf" | foreach {
if((Get-Content $_.FullName | select -first 1 ) -like "%PDF-1.5*"){
$HL7 = $_.FullName.replace("ext_dok","MDM")
$HL7 = $HL7.replace(".pdf",".hl7")
move $_.FullName $newLocation;
move $HL7 $newLocation
}
}
尝试使用上面的内容,这也更容易编辑。
$pdfDirectory
需要设置为包含 PDF 文件的文件夹
$newLocation
显然将是新目录!
您仍然需要更改 式的“%PDF-1.5*”
以适合您的搜索!
它应该为你完成剩下的事情,试一试
再次编辑
我在我的计算机上模仿了您的文件夹结构,并放置了一些 PDF 文件和匹配的 HL7 文件,并且脚本运行良好。
关于Powershell:浏览目录中的所有文件(PDF)并根据前 6 个字节中写入的内容移动它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57723615/