检查文件是PDF还是RTF,然后将扩展名更改为RTF Powershell脚本

时间:2015-10-28 07:50:14

标签: powershell scripting

我正在处理应该执行以下操作的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)
}

}    

1 个答案:

答案 0 :(得分:1)

基本上你的问题在于这一行:

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