• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

大量自動修改檔名教學與範例

介紹 Windows 大量檔案批次重新命名的各種方法,並提供實用的範例。


在 Windows 中如果想要一次更改大量檔案的檔案名稱,有好多種方式,以下是各種批次更改檔案的操作方式以及實際範例。

檔案總管

檔案總管除了以手動更改單一檔案的名稱之外,也可以將多個檔案選取後,一次修改多個檔名。
Step 1
按住 Ctrl 或 Shift 鍵,再用滑鼠選擇要修改檔名的檔案。若要直接選擇所有檔案,可以使用 Ctrl + A 快速鍵。

選取檔案

Step 2
按下滑鼠右鍵,在右鍵選單中選擇「重新命名」。

重新命名

除了從右鍵選單中選擇「重新命名」之外,也可以直接按下 F2 快速鍵來重新命名檔案。

Step 3
輸入新的檔案名稱。

輸入檔名

Step 4
這樣檔案總管就會將所有的檔名改為新的名稱,並且自動加上編號。

新檔名

命令提示字元

若要使用命令提示字元來更改檔名,首先要開啟命令提示字元,並切換至檔案所在目錄,最快的做法就是直接在檔案總管中啟動命令提示字元。
Step 1
在檔案總管的位址列中,直接輸入 cmd 然後按下 Enter 鍵。

輸入 cmd

Step 2
在檔案總管中直接開啟命令提示字元,其預設路徑就會自動設定為目前所在的目錄,接著即可執行更改檔案名稱的指令了。

命令提示字元

在命令提示字元中,要更改檔名可以使用 ren 指令,以下是一些範例。

保留前三個字母

若要將所有的 JPG 圖檔(*.jpg)保留原檔案名稱的前三個字母,然後再加上 -new-name.jpg 做為新的檔案名稱,可以執行:

ren *.jpg ???-new-name.jpg
更改檔案名稱

執行後的結果會像這樣:

更改檔案名稱結果

縮短檔案名稱

如果有許多的檔案名稱太長,就可以執行類似這樣的指令,只保留前面幾個字母:

ren *.* ?????.*

這樣就可以只保留原檔名的前五個字母,讓檔名更精簡:

更改檔案名稱結果

保留連字線之前的名稱

如果要保留檔名中連字線之前的名稱,將後方改為 -orig.jpg 結尾,可以執行:

ren *-*.jpg *-orig.jpg
更改檔案名稱結果

更改副檔名

若要將所有的 JPG 檔案的副檔名更改為 JPEG,可以執行:

ren *.jpg *.jpeg
更改檔案名稱結果

PowerShell

在檔案總管中也可以直接啟動 PowerShell,是一種很實用的隱藏功能。
Step 1
在檔案總管的目錄中,先按住 Shift 鍵,然後在空白處按下滑鼠右鍵,在選單中點選「在這裡開啟 PowerShell 視窗」。

在這裡開啟 PowerShell 視窗

Step 2
這樣開啟的 PowerShell 視窗,其預設路徑就會是目前所在的目錄。

PowerShell 視窗

在 PowerShell 中,若要大量更改檔名通常都會使用 Dir 指令列出檔案名稱,再交給 Rename-Item 指令來更改檔名,以下是一些範例。

大量更改檔名

若要將所有的 JPG 檔案更改為相同的檔名,並自動加上編號,可以執行:

# 將檔名自動編號
Dir *.jpg | %{Rename-Item $_ -NewName ("new-name-{0}.jpg" -f $c++)}
大量更改檔名

執行的結果會像這樣:

更改檔案名稱結果

若要讓數字統一為三位數,不足則補 0,可以這樣寫:

# 將檔名自動編號(三位數,不足則補 0)
Dir *.jpg | %{Rename-Item $_ -NewName ("new-name-{0:000}.jpg" -f $c++)}

保留檔名前四個字母

若想要將太長的檔案名稱縮短,只保留每個檔名的前四個字母,可以執行:

# 僅保留檔案名稱的前四個字母,以及副檔名
Dir | Rename-Item -NewName {$_.Name.Substring(0,4) + $_.Extension}
更改檔案名稱結果

更改副檔名

若要將所有的 JPG 檔案的副檔名改為 jpeg,可以執行:

# 更改副檔名
Dir *.jpg | Rename-Item -NewName { [io.path]::ChangeExtension($_.name, "jpeg") }

取代檔名中的關鍵字

若要將檔案名稱中特定的字詞取代成新的文字,可以執行:

# 取代檔名中的關鍵字
Dir | Rename-Item -NewName {$_.Name -replace "old","new"}

若將新的字串設定為空字串,就等於刪除關鍵字的效果:

# 刪除檔名中的關鍵字
Dir | Rename-Item -NewName {$_.Name -replace "keyword",""}

將檔名中的空白字元,以下底線來取代也是很常用的指令:

# 將空白字元以下底線取代
Dir | Rename-Item -NewName { $_.Name -replace " ","_" }

參考資料:Windows Central、G. T. Wang

分類:PowerShell, Windows

讀者互動方式

留言

  1. Gladys 表示:

    2019-08-2914:34:05

    請問,若是不更改檔名,只是要在原有檔名前加上”0_”,該如何進行呢?

    • Office Guide 表示:

      2019-08-3006:04:55

      試試看這行 PowerShell 指令:

      Dir | Rename-Item -NewName {"0_" + $_.Name}
      • Shh 表示:

        2019-10-2512:51:29

        您好,我用win10,我用此指令,在檔名前面加上英文B,
        出現紅字寫「找不到其中一個路徑」,同時還複製多達100個以上的B
        如 01 –>BBBBBBBBBBBBBBBBBBBBBBBBBBBB01
        請問如何解決問題?

        同樣的指令我在WIN7是成功的。

        • CHENG 表示:

          2020-04-3012:53:42

          我也遇到依樣問題,加了很多個字母…….
          變通用法,我先下這個命令有成功
          Dir | Rename-Item -NewName {“0_” + $_.Name}

          然後下這個命令就解決
          Dir | Rename-Item -NewName {$_.Name -replace “0_”,”B”}

      • Angie 表示:

        2020-07-0711:05:08

        請問如果是要加在檔名後面呢? e.g. xxxxx.jpg–> xxxxx_abc.jpg

        • Ethan Lee 表示:

          2021-09-0815:36:35

          Dir *.* | Rename-Item -NewName { $_.BaseName + ‘_abc’ + $_.Extension }
          or
          Dir *.* | Rename-Item -NewName {$_.Name -replace “$\.jpg$”,”_abc.jpg”}

  2. 問問題 表示:

    2019-08-3015:12:50

    請問,如果是要刪除原檔名的前幾個固定的字數,該如何進行?
    例如檔名為:
    0102中山路
    0232復興北路
    0412忠孝東路一段
    2235大同街
    3158台北車站
      ┊
    想要統一刪除前四碼數字的部份,該如何處理,謝謝。

    • Office Guide 表示:

      2019-08-3112:35:36

      請試試看這行 PowerShell 指令:

      Dir | Rename-Item -NewName {$_.Name.Substring(4)}
  3. admin 表示:

    2019-08-3015:16:18

    請問只刪前面幾個字應該如何進行呢 謝謝

    • Office Guide 表示:

      2019-08-3112:36:27

      利用 PowerShell 的 Substring 即可,請參考上面的留言。

  4. 小四 表示:

    2019-09-1014:26:30

    如果檔名為123.PDF.PGP.OUT,想要修成123.PDF,指令如何下

    • Office Guide 表示:

      2019-09-1019:25:10

      去掉檔案名稱的最後 8 的字元:

      Dir | Rename-Item -NewName {$_.Name.Substring(0, $_.Name.Length-8)}
  5. Guest 表示:

    2019-09-1217:38:20

    如果檔名為ABCDE202
    想改為ABCDE_202_科目

    請問該如何下指令呢?謝謝您

    • Office Guide 表示:

      2019-09-1219:58:43

      可以試試看這樣:

      Dir | Rename-Item -NewName {$_.BaseName.Substring(0, 5) + "_" + $_.BaseName.Substring(5, 3) + "_科目" + $_.Extension}

      這行指令只會改變主要檔案名稱,副檔名會維持不變。

      • Guest 表示:

        2019-09-1513:47:35

        嘗試成功,謝謝您!

  6. Chris 表示:

    2019-09-1222:02:36

    您好,請問原始檔名如果都是 example.bin_123456
    想只保留 example.bin 的話要怎麼處理呢?
    後面的數字都不同的狀態下
    感謝您

    • Office Guide 表示:

      2019-09-1519:43:29

      試試看這行 PowerShell 指令:

      Dir | Rename-Item -NewName {$_.BaseName + $_.Extension.Substring(0, 4)}

      這會讓副檔名只留下前三個字元,其餘去掉。

  7. niko 表示:

    2019-09-2013:26:16

    請問如果想用powershell為檔案加上編號,但不是從0開始,例如想從213開始(即213,214,215…)
    這樣有方法嗎? 謝謝

    • Office Guide 表示:

      2019-09-2014:10:42

      一開始先設定一下起始編號就可以了,例如:

      $c=213; Dir *.jpg | %{Rename-Item $_ -NewName ("new-name-{0}.jpg" -f $c++)}
      • niko 表示:

        2019-09-2111:25:20

        謝謝你這麼有效率的回覆教學 🙂

  8. Jade 表示:

    2019-10-0415:11:22

    請問一下 若是要將從系統上下載的電子發票重新命名為該發票號碼 ex. AB12345678-AB12345699 試過幾次 不論是用上述的設定起始編號 Rename-Item 或是利用 Get-ChildItem 都會有點錯誤 特別是第2個重新命名的發票號碼(應該為AB12345679)會跳到最後一個號碼(AB12345699) ? 而第3到第10個發票號碼都會因此而少1號. 請問有可能的原因及解決方法為何? 謝謝!

  9. VIC 表示:

    2019-11-0811:14:18

    你好 想請教一下 如果檔案名稱為
    ABCD_001_QQ_108.01.01~108.01.07.txt
    ABCD_001_QQ_108.08.01~108.01.15.txt
    ABCD_001_QQ_108.01.16~108.01.25.txt
    …..
    ABCD_001_QQ_108.01.16~108.01.25.txt

    如何使中間的001自動編碼成
    ABCD_001_QQ_108.01.01~108.01.07.txt
    ABCD_002_QQ_108.08.01~108.01.15.txt
    ABCD_003_QQ_108.01.16~108.01.25.txt
    ….
    ABCD_099_QQ_108.01.16~108.01.25.txt

    按照上述的程式語言,我無法將後方的日期也做自動編輯的功能

    Dir | %{Rename-Item $_ -NewName (“ABCD_{001}_QQ_108.01.01~108.01.07.txt” -f $c++)}

    我需要做的是不是保留後半部的日期然後讓前面的檔案名稱自動變更?

  10. JUDY LIN 表示:

    2019-11-1308:48:11

    請教~大量活動相片欲保留,但要將原始編號以便分類。例如:ABCD1234、ABCD1235……
    改為:XYZ1234、XYZ1235
    該如何才好?

  11. KENT 表示:

    2019-11-2122:24:26

    我想要為原始檔名前面加上編號

    (EX:原始檔名為AAAA、BBBB、CCCC、……

    要變成01AAAA、02BBBB、03CCCC、……)

    該怎麼做才好,因為不管怎麼試都會把原本的檔名蓋掉。

  12. Au 表示:

    2019-12-2517:06:02

    您好,

    想請教一下
    如果想再不更改檔名的情況下,在檔名前加上編號(01.02.03)是否能批次做到?? 或應該如何執行呢?

    • Office Guide 表示:

      2019-12-2520:16:34

      Dir | %{Rename-Item $_ -NewName ("{0:00}{1}" -f ++$c, $_.Name)}
      • L 表示:

        2021-01-0603:17:20

        請問如果是相反要把檔名前面編號刪除呢

  13. YT 表示:

    2020-02-0421:47:13

    請問是否可以使用命令提示字元幫照片自動加上編號?

  14. Lynn 表示:

    2020-03-0616:15:14

    請問要依照檔案建立的時間排序加上編號,原檔名不動,原檔名錢加上編號
    舉例:原檔名為abc,變成01.abc
    def,變成02.def
    我是這樣執行Dir | %{Rename-Item $_ -NewName (“{0:00}{1}-” -f ++$c, $_.Name)}

    但是編碼後的點”.”,我怎麼寫都出不來,該如何才好?感謝你

  15. Tabo 表示:

    2020-04-1918:09:39

    請問資料夾中所有檔案檔名中都有一個相同的字串,例如(file_name1-ABC.jpg、file_name2-ABC.jpg…),如果想一次刪除所有檔名中的”ABC”這個字串,應如何處理?謝謝!

  16. YO 表示:

    2020-05-2820:22:24

    您好:請教如何尋找自“某固定字元”前的檔名都刪除呢?
    123_a1 -> a1
    12345_a123 -> a123

  17. YO 表示:

    2020-05-2820:24:19

    您好:請教如何尋找自”特定字符”前的檔名都刪除呢?
    123_a1 -> a1
    123456_b1234 -> b1234

    • Office Guide 表示:

      2020-06-1416:43:18

      我這是我想到的兩種狀況:

      AAA_BBB_CCC_123.txt 轉為 BBB_CCC_123.txt:

      Dir | Rename-Item -NewName {$_.Name -replace "^.*?_",""}

      AAA_BBB_CCC_123.txt 轉為 123.txt:

      Dir | Rename-Item -NewName {$_.Name -replace "^.*_",""}
      • YO 表示:

        2020-10-2215:55:01

        非常感謝您!!!
        已能夠尋找自特定字符『前』的檔名都刪除!!!

        另如想尋找自特定字符『後』的檔名都刪除,該怎麼設定呢?
        AAA_BBB_CCC_123.txt 尋找[_BBB]後皆刪除–> 轉為 AAA_BBB.txt
        AAA_BBB_CCC_123.txt 尋找[BBB_]後皆刪除–> 轉為 AAA_BBB_.txt

  18. Jadewyuw 表示:

    2020-06-0911:17:55

    powershell 的取代功能似乎不能刪除系統自動編號產生的(),有刪除()的方法嗎?

    試過下列方式無效:

    # 取代檔名中的關鍵字
    Dir | Rename-Item -NewName {$_.Name -replace “(“,””}

    • Office Guide 表示:

      2020-06-1416:37:55

      小括號屬於特殊的字元,要加反斜線跳脫:

      Dir | Rename-Item -NewName {$_.Name -replace "\(",""}
  19. ching0620 表示:

    2020-06-2008:45:58

    你好,

    Vectors, what even are they _ Essence of linear algebra, chapter 1
    Linear combinations, span, and basis vectors _ Essence of linear algebra, chapter 2

    我下載Youtube影片後遇到困擾,播放清單的順序都在名稱最後,在資料夾內反而不能排序,想請教是否有辦法將_ Essence of linear algebra, chapter 1提取到前面呢?

    • Office Guide 表示:

      2020-06-2016:48:25

      請試試看這行 PowerShell 指令:

      Dir | Rename-Item -NewName {(($_.BaseName -Split(" _ "))[1,0] -Join("_")) + $_.Extension}
  20. jeffer4007 表示:

    2020-06-2311:23:22

    # 刪除檔名中的關鍵字
    Dir | Rename-Item -NewName {$_.Name -replace “(HD)”,””}

    您好,我想將(HD) 整個改成空格,但是上面執行結果會留下(),請問我該怎麼改呢?

    • 123 表示:

      2020-07-2710:58:49

      那你就把()也刪掉不會喔

  21. Acos 表示:

    2020-08-1710:41:11

    請問想要一次在所屬資料夾的所有子資料夾及所有檔案加上Hello World是辦的到的嗎?
    例如
    As Is :
    111
    222.exe
    333.docx
    444.xlsx
    To Be :
    111 Hello World
    222 Hello World.exe
    333 Hello World.docx
    444 Hello World.xlsx

  22. wife6099 表示:

    2020-10-1611:46:15

    請問想要一次在所屬資料夾下的所有子資料夾及所有檔案加上固定的文字要如何辦到?

  23. Dean 表示:

    2020-10-2812:57:56

    可不可以把目錄下的照片檔名, 都改成拍攝日期時間 如yyyy-mm-dd-hh.mm.ss.jpg 相同的就-01 -02 這樣….

    • Office Guide 表示:

      2020-10-3120:05:00

      請參考另外一篇文章:PowerShell 以照片拍攝日期時間重新命名教學與範例。

  24. Hawk 表示:

    2020-12-1610:50:44

    請問若想將符合一字串內容,但不固定長度的字串設定為空字串,如何下指令?
    例如:
    A001_”ABCDEFGH…..”
    A002_”ABCDEF”
    A003_”ABCD”
    改成
    A001
    A002
    A003

  25. Hawk 表示:

    2020-12-1617:22:10

    您好:上面那一題也可改成保留”特定字符”前的檔名都呢?
    例如:
    檔名可能為
    A001_ABCDEFGH…..
    A001_ABCDEF”
    A001_ABCD

    我只想保留檔名為
    A001
    (即保留”_ABCD”字串前的檔名)

    • Office Guide 表示:

      2020-12-1707:37:18

      去除下底線以後的字元,將 A001_ABCD.txt 轉為 A001.txt:

      Dir | Rename-Item -NewName {($_.BaseName -replace "_.*","") + $_.Extension}
  26. Abel 表示:

    2020-12-2200:07:43

    您好

    我想要把檔名中間做刪除

    例如
    abcdefghijk-01(fgg27)-7
    abcdefghijk-02(fgg28)-8

    想留的部分為
    abcdefghijk-01-7
    abcdefghijk-02-8

  27. eris 表示:

    2021-01-3110:22:21

    您好,請問:
    檔名原為 11-234567-890
    想要改為 234567
    就是只需,2個「-」連接符號,中間的字串,也不要「-」
    謝謝

    • AAA 表示:

      2021-10-2610:40:37

      看不太懂工蝦子小?

      這樣試試看

      dir|rename-item -newname { $_.name -replace ‘..-(\d{6})-…’,’$1′}

  28. kenny 表示:

    2021-03-0811:47:27

    你好, 請問可否將大案分別抄到同名的資料夾嗎? 

    例如 :

    aaa.jpg > c:/aaa
    bbb.jpg > c:/bbb
    ccc.jpg > c:/ccc
    ddd.jpb > c:/ddd

  29. 阿門 表示:

    2021-04-0816:20:41

    請問可把兩條前面刪掉
    1201R02_4_0421040011_41092244231.pdf
    1201R02_4_0439010518_41091009891.pdf

    改成
    41092244231.pdf
    41091009891.pdf
    謝謝…

    • 匿名A 表示:

      2021-10-2609:53:13

      Dir | Rename-Item -NewName {$_.Name -replace “^.*_”,””}
      他前面有講都沒在看…

  30. debbi 表示:

    2021-04-1005:44:33

    筆記:

    $c=001; Dir *.etl | %{Rename-Item $_ -NewName (“new_name{0:000}.etl” -f $c++)}

  31. meihua 表示:

    2021-05-1509:54:57

    請問
    如果要把某項1,2,3…..更改為0001,0002,0003….該怎麼改
    例如
    0070=1=0001改為0070=0001=0001

  32. 朗月 表示:

    2021-06-2914:54:36

    非常好用 感謝萬分

  33. 哞哞號 表示:

    2021-12-1018:36:53

    請問可以一次修改母資料夾和一連串子資料夾裡面的檔名嗎?

    想把檔名內”~”修改成”-“。

    拜託了大神TAT~

  34. 哈啾 表示:

    2021-12-2809:30:55

    如果是將所有檔名的簡體字轉成繁體字呢?

  35. 楊阿雄 表示:

    2022-01-1112:07:17

    請問:
    能將所有檔案的英文檔名,一次性的操作給翻成正體中文檔名嗎?
    謝謝。

  36. JL 表示:

    2022-04-1109:16:13

    請問我要保留第三個連字線以前的名稱,指令該如何寫?
    謝謝。

  37. KK 表示:

    2022-04-1616:57:32

    請問可否為大批檔名加上順序編號,但要求結果是編號是相差1的,例如:
    原檔名
    abc_003
    bcd_041
    cde-123
    def-056

    改成為(編號指定由120開始)
    abc-102
    bcd-104
    cde-106
    def-108

    有勞費心!

  38. cc 表示:

    2022-05-1311:29:15

    請問可以更名資料夾嗎?

  39. Estonia 表示:

    2022-05-1513:48:26

    非常實用的教學,立刻解決匹次改檔名的問題。感恩

  40. EATing 表示:

    2022-06-1516:48:58

    成功更改檔名了~~但是順序跑掉了,求解,感恩

  41. HYC 表示:

    2022-06-1717:58:05

    如果有PDF檔案要對照EXCEL檔名要批次修改成新的檔名有何作法嗎?

    例如”

    中D2014-01-0129 改成 中B2014-01-101
    中D2014-01-0130 中B2014-01-102
    中D2014-01-0131 中B2014-05-001
    中D2014-01-0132 中B2014-05-002
    中D2014-01-0133 中B2014-06-001

  42. Tina 表示:

    2022-06-2110:06:02

    1.請問如果檔名為0039=120=001=001=001,其中第四個001想改為0001,該如何下指令呢?感謝!
    2.如有影像檔0039=120=001=001=001=001要改為0039=120=001=0001=001=0001,該如何更改呢?謝謝

  43. Joey Joe 表示:

    2022-10-1016:23:59

    PowerShell 加編號是非常好用的,但我非常需要的編號是→隨機的(即亂數) 請問可以作到嗎,感謝~~~

  44. mokuyohsieh 表示:

    2023-02-0223:30:47

    請問如果是111 – aaa.txt -> aaa – 111.txt
    222 – aaa.txt -> aaa – 222.txt
    333 – bbb.txt -> bbb – 333.txt
    想把檔名分割線( – ) 前後批次對掉重新命名
    這樣可以~求解 感謝

  45. PONY 表示:

    2023-03-0621:31:39

    想請問想刪除 前3碼及後面的兩個空格,保留 Asian ……..,該如何處理

    001 Asian Brown Flycatcher (Muscicapa dauurica)

  46. CYL 表示:

    2023-03-0816:15:40

    請問如何將檔名中”_之前”的字串改成”資料夾的名稱”
    例如C:\Users\Downloads\9999>
    feww3q_ABC >> 9999_ABC.jpg
    ergwg_XYZ >> 9999_XYZ.jpg

  47. QQ 表示:

    2023-05-0200:03:53

    能一次修改2個以上資料夾的資料嗎

  48. MAY 表示:

    2023-09-0611:54:17

    請問EXCEL如何在原有檔名後面批量自動加上「_文件的修改日期」下底線與修改日期?
    例如:ABB07-055_20230906

主要資訊欄

搜尋

近期文章

  • Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤
  • Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例
  • Linux 網路設定 ip 指令用法教學與範例
  • Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例
  • Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例
  • Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例
  • Linux 以 Cryptsetup 與 LUKS 加密磁碟教學與範例
  • Linux 使用 age 簡潔的加密、解密工具使用教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide