溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么用bat批處理實(shí)現(xiàn)批量修改文件名

發(fā)布時(shí)間:2021-08-04 20:55:21 來(lái)源:億速云 閱讀:380 作者:chen 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“怎么用bat批處理實(shí)現(xiàn)批量修改文件名”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么用bat批處理實(shí)現(xiàn)批量修改文件名”吧!

我們已經(jīng)會(huì)使用循環(huán)命令對(duì)大量文件改名進(jìn)行批量處理。但總結(jié)一下,該批處理并不是很健壯。

判斷一個(gè)程序的好壞,往往不是站在程序員的角度,而從用戶(hù)的角度出發(fā)。

比如:在用戶(hù)使用它的時(shí)候,如果輸入了不正確的路徑格式怎么辦?如果輸入了含有非法符號(hào)的前綴怎么辦?輸入的擴(kuò)展名也有問(wèn)題怎么辦?改完名后看不到是否執(zhí)行成功的反饋信息,等等。帶著這些想法,我們將原程序再次修改一下。

:::::::批量修改文件名.bat:::::::
@echo off
title 批量修改文件名
setlocal EnableDelayedExpansion
:: 啟用延遲變量擴(kuò)充

:GetPath
set zpath=%CD%
:: 對(duì)變量進(jìn)行初始化,防止用戶(hù)不輸入而直接跳過(guò)。其中%CD%表示當(dāng)前路徑
set /p zpath=請(qǐng)輸入目標(biāo)文件所在的路徑:
if %zpath:~0,1%%zpath:~-1%=="" set zpath=%zpath:~1,-1%
:: 檢查變量 zpath 的第一個(gè)和最后一個(gè)字符是否為 "" ,是的話就去掉
if not exist "%zpath%" goto :GetPath
:: 如果 zpath 值的路徑不存在,就得跳轉(zhuǎn)回去,要求重新輸入

:GetPrefix
set prefix=未命名
set /p prefix=請(qǐng)輸入文件名前綴(不能包含以下字符\/:*?"<>|):
for /f "delims=\/:*?<>| tokens=2" %%i in ("z%prefix%z") do goto :GetPrefix
:: 這里對(duì)變量 perfix 進(jìn)行檢查,發(fā)現(xiàn)有非法符號(hào)便跳轉(zhuǎn)到 :GetPrefix
:: 事實(shí)上,這里并沒(méi)有對(duì)雙引號(hào) " 進(jìn)行檢測(cè),因?yàn)殡p引號(hào)無(wú)法在此被轉(zhuǎn)義為可用的分隔符
:: 即使是在這個(gè)程序里,不正確地使用雙引號(hào)也會(huì)引起程序異常而退出。
:: 因此,想把它做的非常人性化并不是一件容易的事情

:GetExt
set ext=.*
set /p ext=請(qǐng)輸入文件的擴(kuò)展名(不輸入則表示所有類(lèi)型):
if not "%ext:~0,1%"=="." set ext=.%ext%
:: 檢查變量 ext 的第一個(gè)是否為句點(diǎn) . ,不是的話就加上
:: 建議這里對(duì)變量 ext 也檢查一下,發(fā)現(xiàn)有除*外的非法符號(hào)便跳轉(zhuǎn)到 :GetExt

set answer=N
echo.
echo 您試圖將 %zpath%\ 里的所有 %ext% 類(lèi)型的文件以 %prefix% 為前綴名進(jìn)行批量改名,是否繼續(xù)?
set /p answer=繼續(xù)請(qǐng)輸入 Y ,輸入其它鍵放棄...
if "%answer%"=="Y" goto :ReadyToRename
if "%answer%"=="y" goto :ReadyToRename

echo 放棄文件改名,按任意鍵退出... & goto :PauseThenQuit

:ReadyToRename

set /a num=0
echo.

if "%ext%"==".*" (
  for %%i in ("%zpath%\*%ext%") do (
    set /a num+=1
    ren "%%i" "%prefix%!num!%%~xi" || echo 文件 %%i 改名失敗 && set /a num-=1
  )
) else (
  for %%i in ("%zpath%\*%ext%") do (
    set /a num+=1
    ren "%%i" "%prefix%!num!%ext%" || echo 文件 %%i 改名失敗 && set /a num-=1
  )
)

if %num%==0 echo %zpath%\ 里未發(fā)現(xiàn)任何文件。按任意鍵退出... & goto :PauseThenQuit

echo 文件改名完成,按任意鍵退出...

:PauseThenQuit
pause>nul
::::::::::::::::::::::::::::::::

感謝各位的閱讀,以上就是“怎么用bat批處理實(shí)現(xiàn)批量修改文件名”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)怎么用bat批處理實(shí)現(xiàn)批量修改文件名這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

bat
AI