检查文件是 PDF 还是 RTF,然后将扩展名更改为 RTF Powershell 脚本
Checking if a file is a PDF or RTF then changing the extension to RTF Powershell script
我正在处理应该执行以下操作的 PowerShell 脚本:我有一个 PDF 文件文件夹,但其中至少有一半是 RTF 格式而不是 PDF,但扩展名仍然是 PDF。所以我所做的是一个脚本,它将检查前几个字符并确定它是否为 RTF
$files = Get-ChildItem -Filter *.pdf -Recurse | % { $_.FullName }
foreach ($i in $files) {
echo $i
$firstLine = Get-Content $i -TotalCount 1
$firstLine = $firstLine.Substring(0,6)
echo $firstLine
if($firstLine -eq "{\rtf1") {
echo "I'm here"
$fileName= $i
$newExtension="rtf"
[io.path]::ChangeExtension($fileName,$newExtension)
}
}
基本上你的问题出在这一行:
if($firstLine -eq "{\rtf1") {
您应该添加转义字符,这样 powershell 就可以像这样将其作为常规文本进行威胁:
if($firstLine -eq "\{\rtf1") {
无论如何,IMO 有一个更简单的方法...
$files = Get-ChildItem -Filter *.pdf -Recurse
foreach ($file in $files)
{
if (Get-Content $file.fullname | Select-String '\{\rtf1' -Quiet)
{
$NewFileEXT = $file.BaseName + '.rtf'
Rename-Item $file.FullName $NewFileEXT
}
}
要获取有关转义字符的更多信息,请键入:
Get-Help about_Escape_Characters
我正在处理应该执行以下操作的 PowerShell 脚本:我有一个 PDF 文件文件夹,但其中至少有一半是 RTF 格式而不是 PDF,但扩展名仍然是 PDF。所以我所做的是一个脚本,它将检查前几个字符并确定它是否为 RTF
$files = Get-ChildItem -Filter *.pdf -Recurse | % { $_.FullName }
foreach ($i in $files) {
echo $i
$firstLine = Get-Content $i -TotalCount 1
$firstLine = $firstLine.Substring(0,6)
echo $firstLine
if($firstLine -eq "{\rtf1") {
echo "I'm here"
$fileName= $i
$newExtension="rtf"
[io.path]::ChangeExtension($fileName,$newExtension)
}
}
基本上你的问题出在这一行:
if($firstLine -eq "{\rtf1") {
您应该添加转义字符,这样 powershell 就可以像这样将其作为常规文本进行威胁:
if($firstLine -eq "\{\rtf1") {
无论如何,IMO 有一个更简单的方法...
$files = Get-ChildItem -Filter *.pdf -Recurse
foreach ($file in $files)
{
if (Get-Content $file.fullname | Select-String '\{\rtf1' -Quiet)
{
$NewFileEXT = $file.BaseName + '.rtf'
Rename-Item $file.FullName $NewFileEXT
}
}
要获取有关转义字符的更多信息,请键入:
Get-Help about_Escape_Characters