PowerShell 重命名文件

PowerShell 重命名文件

我找到一个脚本,然后对其进行了一些修改以重命名电影具有如下名称的文件:

"The.Titan.2018.1080p.WEBRip.x264-[YTS.AM].mp4"

"The Titan 2018.mp4"

我根据自己的需要使用和修改的代码

Set-Location "X:\AUTOMATED_FILM_&_TV_SHOWS\2_SEPERATING_FOLDER\MOVIES"
Get-ChildItem | Where-Object{$_.BaseName -Match '(.*?\.(19|20)\d{2})\..*'} | Rename-Item -NewName {($_.BaseName -replace '(.*?\.(19|20)\d{2})\..*','$1')+$_.Extension}
dir -Filter *.mp4 | Rename-Item -NewName { $_.BaseName.replace("."," ") + $_.Extension }

我无法弄清楚如何修改此代码以重命名我的电视节目具有如下名称的文件:

"Quantico.S03E04.720p.HDTV.x264-KILLERS.mp4"

我希望它改变文件名

"Quantico S03E04.mp4

答案1

您可以使用每一个使用 PowerShell 循环语句并利用分裂()方法相应地迭代文件获取子项命令,然后相应地重命名文件,假设您始终需要使用该文件夹中的文件的第一个点之前和第二个点之前的部分加上原始扩展名进行重命名。

示例脚本

$Folder = "X:\AUTOMATED_FILM_&_TV_SHOWS\2_SEPERATING_FOLDER\MOVIES"
$Files = Get-ChildItem $Folder -filter "*.mp4" 

Foreach ($file in $Files){
    $s = [String]$file
    $ext = $file.Extension
    $name = ($s.Split(".")[0] + " " + $s.Split(".")[1] + $ext) 
    Rename-Item -Path $file -NewName $name
}

更多资源

答案2

大家好,谢谢你的帮助,

Pimp Juice 感谢您更恰当地改变问题。我在互联网上对正则表达式进行了一些研究,并进行了一些试验和错误。

设法生成一个可以工作的代码,但无论如何它得到了改进,使其更有效率,但对于我收到的文件名来说,变化不大,所以

似乎有效的代码如下

Set-Location "C:\Users\BRACEGIRDLE\Favorites\Desktop\RENAME"
Dir -Filter *.mkv | Get-ChildItem | Where-Object{$_.BaseName -Match "(.*?\.[A-Z][0-9][0-9][A-Z][0-9][0-9])\..*"} | Rename-Item -NewName {($_.BaseName -replace "(.*?\.[A-Z][0-9][0-9][A-Z][0-9][0-9])\..*",'$1')+$_.Extension}
Dir -Filter *.mkv | Rename-Item -NewName { $_.BaseName.replace("."," ") + $_.Extension }

Dir -Filter *.mp4 | Get-ChildItem | Where-Object{$_.BaseName -Match "(.*?\.(19|20)\d{2})\..*"} | Rename-Item -NewName {($_.BaseName -replace "(.*?\.(19|20)\d{2})\..*",'$1')+$_.Extension}
Dir -Filter *.mp4 | Rename-Item -NewName { $_.BaseName.replace("."," ") + $_.Extension }

答案3

由于这个问题出现在主页上,因此电源外壳解决方案(仍然使用.Split(),我认为它使得扫描代码时理解速度更快):

$Folder = 'X:\AUTOMATED_FILM_&_TV_SHOWS\2_SEPERATING_FOLDER\MOVIES'

Get-ChildItem $Folder *.mp4 | Rename-Item -NewName {
    $Parts = $_.Name.Split('.')
    '{0} {1}.{2}' -f $Parts[0], $Parts[1], $Parts[-1]
}

相关内容