AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1545659
Accepted
LexPointOh
LexPointOh
Asked: 2020-04-26 07:34:57 +0800 CST2020-04-26 07:34:57 +0800 CST 2020-04-26 07:34:57 +0800 CST

如何编辑以下 Powershell 代码以重命名 MP4 视频文件并附加分辨率?

  • 772

有谁知道如何编辑我在下面找到的代码,以便 1080p 或 720p 在文件名的末尾。我希望我的文件名从此开始

Black.Panther.2018.1080p.BluRay.x264-[YTS.AM].txt
Sonic.The.Hedgehog.1920.1080p.WEBRip.x264.AAC-[YTS.MX].txt
Fun.with.Dick.and.Jane.2005.1080p.BrRip.x264.YIFY.txt                                              
The.Italian.Job.2003.720p.BrRip.x264.YIFY.txt                                                  
The.Legend.Of.Tarzan.1916.720p.BluRay.x264-[YTS.AG].txt

对此...

黑豹2018.1080p.txt
刺猬索尼克 1920 1080p.txt
迪克和简的乐趣 2005 1080p.txt                                              
意大利工作 2003 720p.txt                                                  
泰山传奇 1916 720p.txt

这是我正在使用的代码:

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 }
powershell rename
  • 2 2 个回答
  • 777 Views

2 个回答

  • Voted
  1. Best Answer
    Keith Miller
    2020-04-26T20:49:39+08:002020-04-26T20:49:39+08:00

    我认为这会做到:(-WhatIF试运行后删除)

    Set-Location 'X:\AUTOMATED_FILM_&_TV_SHOWS\2_SEPERATING_FOLDER\MOVIES'
    Get-ChildItem -Name | ForEach {
        If ( $_ -match '(^.+(?:720p|1080p)).+(\.\w{3})' ) {
            Rename-Item -LiteralPath $_ -NewName ( $matches[1].Replace('.',' ') + $matches[2] ) -WhatIf
        }
    }
    

    使用此代码测试的名称构造:

    'The.Titan.2018.720p.WEBRip.x264-[YTS.AM].mp4',
    'Avatar.2018.1080p.WEBRip.x264-[YTS.AM].mp4' | ForEach {
        If ( $_ -match '(^.+(?:720p|1080p)).+(\.\w{3})' ) {
            echo ( $matches[1].Replace('.',' ') + $matches[2] )
        }
    }
    

    输出:

    PS C:\...\keith>ren test.reg atesty.reg^C
    PS C:\...\keith>cd \
    PS C:\> 'The.Titan.2018.720p.WEBRip.x264-[YTS.AM].mp4',
    >> 'Avatar.2018.1080p.WEBRip.x264-[YTS.AM].mp4' | ForEach {
    >>     If ( $_ -match '(^.+(?:720p|1080p)).+(\.\w{3})' ) {
    >>         echo ( $matches[1].Replace('.',' ') + $matches[2] )
    >>     }
    >> }
    The Titan 2018 720p.mp4
    Avatar 2018 1080p.mp4
    PS C:\>
    
    • 0
  2. Lee_Dailey
    2020-04-27T11:07:02+08:002020-04-27T11:07:02+08:00

    这似乎可以完成这项工作。[ grin ] 它假定文件都包含WEBRip在文件名中,并且该字符串是您要拆分文件基本名称的位置。评论似乎足够,但请随时询问是否有任何代码不明显。

    $SourceDir = "$env:TEMP\LexPointOh"
    
    #region >>> create files to work with
    #    when ready to do this with real data point the "$SourceDir" to your real data
    if (-not (Test-Path $SourceDir))
        {
        $Null = mkdir -Path $SourceDir
        }
    @(
        'The.Titan.2018.720p.WEBRip.x264-[YTS.AM].mp4'
        'Avatar.2018.1080p.WEBRip.x264-[YTS.AM].mp4'
        ) |
        ForEach-Object {
            $Null = New-Item -Path $SourceDir -Name $_ -ItemType 'File' -ErrorAction 'SilentlyContinue'
            }
    #endregion >>> create files to work with
    
    $FileList = Get-ChildItem -LiteralPath $SourceDir -Filter '*.mp4' -File |
        Where-Object {
            # skip files that already end with a resolution value
            $_.BaseName -notmatch '\d{1,}p$'
            }
    
    foreach ($FL_Item in $FileList)
        {
        # match everything from the start of the string up to & including the "<digit><p><dot>"
        #    the "$Null" is there to dump the unwanted output of the match operator
        $Null = $FL_Item.BaseName -match '^.+\dp\.'
        # get the 1st match from the "$Matches" automatic variable
        #    trim away any trailing dot
        #    split on the remaining dots
        #    join the results with spaces
        #    finally, add the file extension
        $NewName = ($Matches[0].TrimEnd('.').Split('.') -join ' ') + $FL_Item.Extension
        $FullNewName = Join-Path -Path $SourceDir -ChildPath $NewName
    
        if (-not (Test-Path -LiteralPath $FullNewName))
            {
            Rename-Item -LiteralPath $FL_Item.FullName -NewName $NewName #-WhatIf
            }
            else
            {
            Write-Warning ('    A file named [ {0} ] already exists in {1}' -f $NewName, $SourceDir)
            }
        }
    

    Avatar 2018 1080p.mp4当$SourceDir` 中 已有文件时输出...

    WARNING:     A file named [ Avatar 2018 1080p.mp4 ] already exists in C:\Temp\LexPointOh
    

    否则没有输出。您可能想要添加此类 - 或将失败/成功记录到文件中以供以后使用。

    • 0

相关问题

  • 如何将变量字符串放入powershell中的数组?

  • Powershell 和正则表达式:Notepad++“保存时备份”文件列表。编辑名称,按上次写入时间排序

  • 将前景颜色添加到 Powershell 配置文件?

  • 禁用后无法启用 Microsoft Print to PDF

  • 我可以让这个 PowerShell 脚本接受逗号吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve