Windows檔案批量更名,就是這麼簡單!

你是否也遇過這樣的案例,需要將一堆的檔案變更副檔名或是將檔名某字串取代成指定的呢? 若檔案在十個以內,一個個改是還好,但檔案數超過十個百個以上時,難道這時也一個個改嗎! 應該有批量的修改方式吧! 是的,下列介紹怎麼批量修改這二種情境。

批量修改副檔名

請開啟命令提示字元,開啟的方式可以按Windows + R,再輸入 cmd ,或是在 程式集 > 附屬應用程式 > 命令提示字元 也可以找到。

筆者在工作時,會需要把 MSSQL 的 Script 匯出,但匯出時的名稱會跟命名規則不同,且這些程式數量蠻多的,不可能一個個改檔名,所以就需要會用 DOS Command 的指令來修改,這樣修改就很有效率,下面範例是把副檔名 .sql 變更為 .txt

使用 dir 查看修改的目錄檔案

為了能前後比對,先把要修改的檔案列出來

D:\Test>dir
 磁碟區 D 中的磁碟是 DATA
 磁碟區序號:  CA1A-0053

 D:\Test 的目錄

2020/04/20  下午 12:02    <DIR>          .
2020/04/20  下午 12:02    <DIR>          ..
2020/04/20  上午 10:39                 0 dbo.uvTest (1).View.sql
2020/04/20  上午 10:39                 0 dbo.uvTest (2).View.sql
2020/04/20  上午 10:39                 0 dbo.uvTest (3).View.sql
2020/04/20  上午 10:39                 0 dbo.uvTest (4).View.sql
2020/04/20  上午 10:39                 0 dbo.uvTest (5).View.sql
              12 個檔案               0 位元組
               2 個目錄  270,111,956,992 位元組可用

使用 renrename 指令更改副檔名

將上面副檔名是 .sql 的檔案更改為副檔名是 .txt,修改的命令如下:

> rename *.sql *.txt

再用 dir 查詢一次,可以看到變更了。

D:\Test>dir
 磁碟區 D 中的磁碟是 DATA
 磁碟區序號:  CA1A-0053

 D:\Test 的目錄

2020/04/20  下午 01:12    <DIR>          .
2020/04/20  下午 01:12    <DIR>          ..
2020/04/20  上午 10:39                 0 dbo.uvTest (1).View.txt
2020/04/20  上午 10:39                 0 dbo.uvTest (2).View.txt
2020/04/20  上午 10:39                 0 dbo.uvTest (3).View.txt
2020/04/20  上午 10:39                 0 dbo.uvTest (4).View.txt
2020/04/20  上午 10:39                 0 dbo.uvTest (5).View.txt
               5 個檔案               0 位元組
               2 個目錄  270,111,895,552 位元組可用

不過 .sql 才是筆者要的,變更成 .txt 只是示範而已,所以再改回來吧。

批量檔名字串取代

在這 Test 資料夾的這些 .sql 檔會發現檔名最後有 .View ,這個不是筆者要的,那要怎麼一次性的變更呢? 如果用上述的 ren 命令只能從 .sql 變更成 .View.sql ,但無法從 .View.sql 變更成 .sql ,因為最後一個點的後面才是副檔名,那要如何把 .View 給去掉呢? 這裡我們使用 PowerShell 來修改。

請開啟 PowerShell ,開啟的方式可以按Windows + R,再輸入 powershell ,或是在 程式集 > 系統管理工具 > Windows PowerShell Modules 也可以找到。

開啟後,切換到該目錄,先使用 dir 把所有的檔案列出來,然後交給 Rename-Item 指令進行更名,這裡是把 .View 取代成空白,修改的命令如下。

> dir | Rename-Item -NewName { $_.name -replace ".View",""}

執行結果如下:

PS C:\Users\alvinlin> d:
PS D:\> cd d:\test
PS D:\test> dir | Rename-Item -NewName {$_.name -replace ".View",""}
PS D:\test> dir

    目錄: D:\test

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---       2020/4/20  上午 10:39          0 dbo.uvTest (1).txt
-a---       2020/4/20  上午 10:39          0 dbo.uvTest (2).txt
-a---       2020/4/20  上午 10:39          0 dbo.uvTest (3).txt
-a---       2020/4/20  上午 10:39          0 dbo.uvTest (4).txt
-a---       2020/4/20  上午 10:39          0 dbo.uvTest (5).txt

PS D:\test>

看吧! 就是這麼簡單,如果有子資料夾的話,應該可以利用迴圈的方式來修改,有機會再來進一步介紹及 Rename-Item 其它功能。

留言