用於將「The Kids Performances (2020).mp4」等檔案名稱重新命名為「Kids Performances, The (2020).mp4」的批次命令

用於將「The Kids Performances (2020).mp4」等檔案名稱重新命名為「Kids Performances, The (2020).mp4」的批次命令

我的家人多年來將孩子們在學校的表現和課外活動的錄音保存為主要.avi文件.mp4。我被要求獲取所有這些文件(其中有一百多個),並重新標記以單詞Theor開頭的任何視頻A,並將其移至末尾。

例如,標題為的影片The Kids Performances (2020).mp4將變更為Kids Performances, The (2020).mp4。我The根本不知道他們為什麼要在標題中保留單字和“A”,但他們確實這樣做了。

我正在使用 Windows,並在該網站的板上找到了一個相對簡單的方法,我可以用它來刪除The標題開頭的 ,但我之前無法找到一種方法將其移動到標題的後面記錄的年份始終列為(year)。

這就是我要說的:

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

這會以批次格式從標題中刪除前 4 個字符,但我在今年之前將前 4 個字符移動到標題末尾時遇到問題。我懇求我的家人把這些字從標題中刪除,但我無法說服他們。

我也在 PC 上安裝了 Python,如果這能提供更簡單的方法來實現此目標。預先感謝任何能夠提供幫助的人!

答案1

電源外殼具有易於擴展的文章列表和擴展列表(我們可以使用-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 }

'^({0})\s(\.+)\s(\(\d+\))' -f ( $ArticleList -join '|' )

建立一個正規表示式

'^(Article[0]|Article[1]{|...})\s(\.+)\s(\(\d+\))'

有三個配對組:

  • Article : ({0})
  • TitleTExt: \s(\.+)
  • (Year) : (\(\d+\))

用於構造新名稱。

答案2

這不是 Keith Miller 發布的自動化解決方案,但作為編寫了足夠 cmd 腳本的人知道我不想編寫另一個腳本,我會使用 Excel 來實現此目的:

  1. 開啟 cmd 提示字元並導覽至包含要重新命名的檔案的資料夾。
  2. dir /b | clip使用(或dir /b /s | clip如果檔案儲存在子目錄中)將檔案名稱清單複製到剪貼簿, 並將其貼上到 Excel 中。
  3. 使用您需要的任何公式將新檔案名稱儲存到另一列中。如果您無法完全自動完成此操作,您可以隨時在必要時手動調整結果。
  4. 一旦您對新檔案名稱感到滿意,請建立 Excel 公式來逐一重新命名檔案。在此階段,該工作表可能類似於:
A C D F G
1 公式:
2 原始檔名 字首 擴大 檔案名稱的其餘部分 新檔案名稱 命令
3 兒童表演 (2018).avi =IF(OR(UPPER(LEFT(A3;2))=“A”;UPPER(LEFT(A3;4))=“THE”);LEFT(A3;FIND(“”;A3)-1);” ”) =MID(A3;FIND("(";A3)+1;4) =右(A3;3) =MID(A3;IF(B3="";1;LEN(B3)+2);LEN(A3)-LEN(B3)-LEN(C3)-LEN(D3)-IF(B3="";4 ;5)) =E3&IF(B3="";"";", "&B3)&" ("&C3&")."&D3 ="任"""&A3&""" """&F3&"""""
4 一些孩子的表演 (2019).mkv =IF(OR(UPPER(LEFT(A4;2))=“A”;UPPER(LEFT(A4;4))=“THE”);LEFT(A4;FIND(“”;A4)-1);” ”) =MID(A4;FIND("(";A4)+1;4) =右(A4;3) =MID(A4;IF(B4="";1;LEN(B4)+2);LEN(A4)-LEN(B4)-LEN(C4)-LEN(D4)-IF(B4="";4 ;5)) =E4&IF(B4="";"";", "&B4)&" ("&C4&")."&D4 ="任"""&A4&""" """&F4&"""""
5 孩子們的表演 (2020).mp4 =IF(OR(UPPER(LEFT(A5;2))=“A”;UPPER(LEFT(A5;4))=“THE”);LEFT(A5;FIND(“”;A5)-1);” ”) =MID(A5;FIND("(";A5)+1;4) =右(A5;3) =MID(A5;IF(B5="";1;LEN(B5)+2);LEN(A5)-LEN(B5)-LEN(C5)-LEN(D5)-IF(B5="";4 ;5)) =E5&IF(B5="";"";", "&B5)&" ("&C5&")."&D5 ="任"""&A5&""" """&F5&"""""
1 價值觀:
2 原始檔名 字首 擴大 檔案名稱的其餘部分 新檔案名稱 命令
3 兒童表演 (2018).avi A 2018年 影片 兒童表演 兒童表演A (2018).avi ren 《兒童表演 (2018).avi》 《兒童表演,A (2018).avi》
4 一些孩子的表演 (2019).mkv 2019年 MKV 部分小朋友表演 一些孩子的表演 (2019).mkv ren 《一些孩子表演 (2019).mkv》 《一些孩子表演 (2019).mkv》
5 孩子們的表演 (2020).mp4 2020年 mp4 兒童表演 兒童表演 (2020).mp4 ren 《兒童表演 (2020).mp4》 《兒童表演 (2020).mp4》
  1. 選擇包含計算命令的儲存格(在上面的範例中為G3:G5)並將它們複製到剪貼簿中,然後在命令提示字元視窗中右鍵單擊(您可能需要在最後一行按Enter 鍵)或貼上剪貼簿將其內容儲存到空的 *.cmd 或 *.bat 檔案中,將其儲存到要重新命名的檔案所在的資料夾並執行。

相關內容