olp*_*dog 3 video batch-rename
我的家人有这些年来孩子们在学校和课外活动中的表现作为主要.avi和.mp4档案保存的录音。我被要求拿走所有这些文件(有一百多个)并重新标记以该词开头的任何视频,The或者A将其移至结尾。
例如,标题为 的视频The Kids Performances (2020).mp4将更改为Kids Performances, The (2020).mp4。我完全不知道他们为什么要The在标题中保留单词和“A”,但他们确实这样做了。
我正在使用 Windows 并在此站点的板上找到了一个相对简单的方法,我可以用它来摆脱The 标题开头的记录的年份始终列为(年)。
这就是我要说的:
for %%i in ("*.mp4") do (set fname=%%i) & call :rename
goto :eof
:rename
::Cuts off 1st four chars, then appends prefix
ren "%fname%" "%fname:~4%"
goto :eof
Run Code Online (Sandbox Code Playgroud)
这负责以批处理格式从标题中删除前 4 个字符,但我无法在年前将前 4 个字符移动到标题的末尾。我已经恳求我的家人把这些词一起从标题中删除,但我无法说服他们。
我在 PC 上也安装了 Python,如果这能提供一种更简单的方法来实现这一目标。在此先感谢任何能够提供帮助的人!
PowerShell具有易于扩展的文章列表和扩展列表(我们可以-whatIf用于测试,然后删除它以执行我们的更改。)
$ArticleList = @( 'A' , 'The' )
$ExtList = @( '*.avi' , '*.mp4' )
# From folder with files
# Remove "-WhatIf" to execute after testing
gci $ExtList |
? { $_.BaseName -match ( '^({0})\s(\.+)\s(\(\d+\))' -f ( $ArticleList -join '|' )) } |
ReName-Item -NewName { '{0}, {1} {3}{4}' -f $matches[2] , $matches[1] , $matches[3] , $_.Extension -WhatIf }
Run Code Online (Sandbox Code Playgroud)
'^({0})\s(\.+)\s(\(\d+\))' -f ( $ArticleList -join '|' )
创建一个正则表达式
'^(Article[0]|Article[1]{|...})\s(\.+)\s(\(\d+\))'
三个匹配组:
Article : ({0})TitleTExt: \s(\.+)(Year) : (\(\d+\))用于构造新名称。
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |