Powershell:使用 .Split 对文件名进行拆分,根据文件名大写的不同而不同

Powershell:使用 .Split 对文件名进行拆分,根据文件名大写的不同而不同

我有一堆图像文件,它们被意外地重命名为“双倍”的文件扩展名(例如IMG_1469.jpg.jpg)。我编写了一个脚本来删除多余的文件扩展名,但出于某种原因,根据文件扩展名是全部大写还是全部小写,它的运行方式会有所不同。如果扩展名是小写,它会按预期运行。

给定同一文件夹中的两个文件,文件名如下:

$FileA = IMG_1468.JPG.JPG
$FileB = IMG_1469.jpg.jpg
$file = Get-ChildItem -Path "\\UNC\Path\To\File" | Where-Object -Property Name -EQ $FileA
If (($file.BaseName).Length -GT 3) {
        $extCheck = ($file.BaseName).Substring(($file.BaseName).Length - 4,4)
        Write-Host "extCheck =" $extCheck
        If ($file.Extension -EQ $extCheck) {
            $oldName = $file.Name
            Write-Host "oldName =" $oldName
            Write-Host "File.Extension =" $file.Extension
            $newName = ($oldName).Split($extCheck)[0]+$file.Extension
            Write-Host "newName =" $newName
            $file | Rename-Item -NewName { $newName }
        }
}

使用 $FileA 输出:

extCheck = .JPG
oldName = IMG_1468.JPG.JPG
File.Extension = .JPG
newName = IM.JPG

What if: Performing the operation "Rename File" on target 
"Item: \UNC\Path\To\File\IMG_1468.JPG.JPG 
Destination: \\UNC\Path\To\File\IMG.JPG".

使用 $FileB 输出:

extCheck = .jpg
oldName = IMG_1469.jpg.jpg
File.Extension = .jpg
newName = IMG_1469.jpg

What if: Performing the operation "Rename File" on target 
"Item: \UNC\Path\To\File\IMG_1469.jpg.jpg 
Destination: \\UNC\Path\To\File\IMG_1469.jpg".

有人知道为什么 .Split 会从基本名称中删除“IM”之后的所有内容,而不是.JPG像删除额外的扩展名那样直接删除吗.jpg

答案1

感谢@Lee_Daily

$FileA.BaseName -replace $FileA.Extension, '' 将此 >>> <<< 转换'IMG_1468.JPG.JPG'为此 >>> 'IMG_1468'<<< 之后,您只需将 .Extension 添加回剩余部分即可

我仍然不知道为什么 .Split 会这样表现,但是按照 @Lee_Daily 的建议重写 $newName 定义似乎与大写无关(从而解决了我的根本问题):

        $newBaseName = $file.BaseName -replace $file.Extension
        $newName = $newBaseName+$file.Extension
        Write-Host "newName =" $newName
        $file | Rename-Item -NewName { $newName } -WhatIf        

即使输入的是 $FileA 的大写值,这也现在可以给我我想要的输出:

extCheck = .JPG
oldName = IMG_1468.JPG.JPG
File.Extension = .JPG
newName = IMG_1468.JPG

What if: Performing the operation "Rename File" on target 
"Item: \UNC\Path\To\File\IMG_1468.JPG.JPG 
Destination: \\UNC\Path\To\File\IMG_1468.JPG".

相关内容