Windows系統(tǒng)使用bat批量修改文件名的使用示例
編寫運行.bat文件
新建文本文檔,輸入如下內(nèi)容:
@echo off chcp 65001 setlocal enabledelayedexpansion rem 設置要查找和替換的字符串 set "search=aaa" set "replace=bbb" rem 設置文件名匹配模式,例如*.txt表示修改.txt文件,*.*表示修改所有文件 set "filePattern=*.txt" rem 設置目標文件夾的路徑 set "folderPath=C:\YourFolderPath" rem 切換到目標文件夾 cd /d "%folderPath%" rem 遍歷文件并重命名 for %%f in (%filePattern%) do ( set "filename=%%~nf" set "newFilename=!filename:%search%=%replace%!" ren "%%f" "!newFilename!%%~xf" ) echo 文件名修改完成。 pause
請按照以下步驟執(zhí)行此批處理腳本:
- 打開記事本或其他文本編輯器,將上述代碼復制粘貼到新建的文本文件中。
- 在代碼中,將
search
變量設置為要查找的字符串,將replace
變量設置為要替換的字符串。 - 如果需要修改特定類型的文件,請將
filePattern
變量設置為相應的文件擴展名。如果要修改所有文件,可以將其設置為*.*
。 - 將
folderPath
變量設置為包含要重命名文件的目標文件夾的路徑。 - 將文本文件保存為批處理文件,例如
rename_files.bat
。 - 雙擊批處理文件以執(zhí)行腳本,它將遍歷目標文件夾中的文件并按照您指定的規(guī)則重命名它們。
請謹慎操作,并在執(zhí)行之前備份文件,以防需要還原。
folderPath設置為bat文件所在的文件夾
@echo off chcp 65001 setlocal enabledelayedexpansion rem 獲取批處理文件所在的文件夾路徑 for %%I in ("%~dp0.") do set "folderPath=%%~fI" rem 設置要查找和替換的字符串 set "search=aaa" set "replace=bbb" rem 設置文件名匹配模式,例如*.txt表示修改.txt文件,*.*表示修改所有文件 set "filePattern=*.txt" rem 切換到目標文件夾 cd /d "%folderPath%" rem 遍歷文件并重命名 for %%f in (%filePattern%) do ( set "filename=%%~nf" set "newFilename=!filename:%search%=%replace%!" ren "%%f" "!newFilename!%%~xf" ) echo 文件名修改完成。 pause
在上述代碼中,"%~dp0"
用于獲取批處理文件所在的文件夾路徑,然后將其賦給 folderPath
變量,以便在后續(xù)的操作中使用。這樣,腳本將工作在批處理文件所在的文件夾中,您可以在該文件夾中執(zhí)行文件名修改操作。
代碼解釋
for %%I in ("%~dp0.") do set "folderPath=%%~fI"
這段批處理腳本的目的是獲取包含批處理文件的文件夾的路徑,并將該路徑存儲在名為 folderPath
的變量中。讓我解釋其中的幾個關鍵部分:
%~dp0
:這是批處理文件內(nèi)置的特殊變量,它表示當前批處理文件的完整路徑,其中%~d
表示驅(qū)動器,%~p
表示路徑。因此,%~dp0
表示當前批處理文件的文件夾路徑。for %%I in ("%~dp0.")
:這是一個for
循環(huán),它遍歷一個項列表,其中%%I
是循環(huán)變量。在這里,我們使用for
循環(huán)來處理%~dp0
的值,因為%~dp0
可能包含空格或特殊字符,需要將其引號括起來。set "folderPath=%%~fI"
:在for
循環(huán)內(nèi)部,%%~fI
表示對循環(huán)變量%%I
的擴展,其中%~f
表示取得完整的路徑。因此,set "folderPath=%%~fI"
將folderPath
變量設置為包含批處理文件的文件夾的完整路徑。
總之,這段代碼的作用是獲取批處理文件所在文件夾的完整路徑,并將其存儲在 folderPath
變量中,以便在腳本的后續(xù)部分中使用該路徑。這對于需要在批處理腳本中引用腳本所在文件夾的情況非常有用,因為它允許腳本在不考慮具體位置的情況下訪問其所需的資源或文件。
for %%f in (%filePattern%) do
for %%f in (%filePattern%) do
是一個批處理中的循環(huán)結構,它的目的是遍歷滿足指定文件模式的文件,并對每個文件執(zhí)行一組命令。讓我解釋其中的幾個關鍵部分:
for %%f
:這是一個for
循環(huán)的開始,其中%%f
是循環(huán)變量的名稱。在批處理中,通常使用%%
來表示循環(huán)變量,而不是單獨的%
。in (%filePattern%)
:這部分定義了要遍歷的文件列表。%filePattern%
是一個變量,它應該包含一個文件模式,用于匹配要處理的文件。例如,如果%filePattern%
的值為*.txt
,那么循環(huán)將遍歷所有擴展名為.txt
的文件。do
:在do
后面的是要在每次迭代中執(zhí)行的一組命令。這些命令可以是批處理腳本中的任何有效命令,例如重命名文件、復制文件、執(zhí)行操作等。
綜合起來,for %%f in (%filePattern%) do
的作用是遍歷滿足文件模式 %filePattern%
的文件,并對每個文件執(zhí)行 do
后面的一組命令。這使得批處理腳本能夠?qū)σ唤M文件執(zhí)行相同的操作,例如批量重命名、復制或刪除文件等。
set "filename=%%~nf"
set "newFilename=!filename:%search%=%replace%!"
ren "%%f" "!newFilename!%%~xf"
這個批處理文件中的代碼用于重命名文件名中的部分文本。讓我解釋一下每一行代碼的含義:
set "filename=%%~nf"
:這一行代碼將當前文件的名稱(不包括擴展名)存儲在變量filename
中。%%~nf
是一個批處理文件中用于獲取文件名部分的特殊語法,其中%%~n
表示獲取文件名,f
表示當前文件的占位符。所以%%~nf
將被替換為當前文件的名稱。set "newFilename=!filename:%search%=%replace%!"
:這一行代碼將在filename
變量中查找并替換文本。具體來說,它會查找filename
中的所有%search%
文本,并將其替換為%replace%
文本。!filename:%search%=%replace%!
是批處理文件中用于進行文本替換的語法。ren "%%f" "!newFilename!%%~xf"
:這一行代碼使用ren
命令(縮寫為rename
)來重命名文件。%%f
表示當前文件的占位符。!newFilename!
是上一行代碼中計算出的新文件名,%%~xf
表示當前文件的擴展名。因此,這一行代碼將當前文件的名稱從%%f
更改為!newFilename!
,并保留原始文件的擴展名。
總之,這個批處理文件用于查找文件名中的特定文本(%search%
)并將其替換為其他文本(%replace%
),然后將文件重命名為新的文件名,同時保留原始文件的擴展名。
bat的輸出終端亂碼
如果您在運行批處理文件時在終端中看到亂碼,這可能是由于字符集或編碼問題引起的。
字符集不匹配:確保終端和批處理文件都使用相同的字符集,通常是 UTF-8。可以通過在批處理文件的開頭添加以下行來設置字符集:
@echo off chcp 65001 (將字符集設置為 UTF-8)
到此這篇關于Windows系統(tǒng)使用bat批量修改文件名的使用示例的文章就介紹到這了,更多相關bat批量修改文件名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
批處理bat判斷一個文件在最近5分鐘內(nèi)是否被更新過的代碼
這篇文章主要介紹了批處理bat判斷一個文件在最近5分鐘內(nèi)是否被更新過的代碼,需要的朋友可以參考下2014-07-07統(tǒng)計每個數(shù)的重復次數(shù),并按照重復次數(shù)由高到低排序的批處理
統(tǒng)計每個數(shù)的重復次數(shù),并按照重復次數(shù)由高到低排序2009-05-05Chdir (Cd) 顯示當前目錄的名稱,或更改當前的文件夾
Chdir (Cd) 顯示當前目錄的名稱,或更改當前的文件夾...2007-09-09BAT批處理判斷服務是否正常運行的方法(批處理命令綜合應用)
批處理就是對某對象進行批量的處理,通常被認為是一種簡化的腳本語言,它應用于DOS和Windows系統(tǒng)中。這篇文章主要介紹了BAT批處理判斷服務是否正常運行(批處理命令綜合應用),需要的朋友可以參考下2020-02-02