五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 使用bat文件實(shí)現(xiàn)批量重命名功能

使用bat文件實(shí)現(xiàn)批量重命名功能

文章來源:365jz.com     點(diǎn)擊數(shù):1799    更新時(shí)間:2017-08-08 12:24   參與評(píng)論
本文通過一個(gè)具體的實(shí)例向大家展示了使用循環(huán)命令對(duì)大量文件進(jìn)行改名的批量處理的方法,有需要的小伙伴可以參考下。

1.bat重命名文件

ren 111.txt 222.doc

解釋:將111.txt 命名為222.doc

2.循環(huán)重命名一個(gè)文件夾下的所有結(jié)尾為xls的文件,前加上A

for /f %%i in ('dir /b *.txt') do (ren %%i A%%i)


3. 在原文件名前面加當(dāng)前系統(tǒng)日期格式y(tǒng)yyyMMdd

@echo off
for /f "tokens=1,2,3 delims=- " %%a in ('date /t') do set day=%%a%%b%%c
for /f %%i in ('dir /b *.txt') do (ren %%i y%%%i)


解釋:tokens=1,2,3 delims=- 以‘-’為分隔符,將當(dāng)前日期截取為三部分,分別付給a,b,c,
         設(shè)置day變量為截取到的三部分的結(jié)合,set day=%%a%%b%%c,即day=格式為yyyyMMdd的當(dāng)天日期

         循環(huán)修改同一目錄下的文件名,*.txt的都會(huì)被修改; i為原文件名

4.現(xiàn)有一堆照片,命名格式為0001.jpg,0002.jpg,0003.jpg,…,00020.jpg,……
要求在所有文件名前加上A_

@echo off
rem 啟用"延緩環(huán)境變量擴(kuò)充"
setlocal EnableDelayedExpansion
set a=1
rem 循環(huán)當(dāng)前目錄下所有圖片的文件名,支持帶空格的名稱
for /f "delims=" %%i in ('dir /b *.jpg') do (
rem 如果沒有相同的文件名,則繼續(xù)
if not "%%~ni"=="%~n0" (
if !a! LSS 10 (ren "%%i" "A_000!a!.jpg") else ren "%%i" "A_!a!.jpg"
rem 設(shè)置數(shù)值型變量a=a+1
set /a a+=1
)
)
echo 批量重命名完成!
pause


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

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

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

:GetPath
set zpath=%CD%
:: 對(duì)變量進(jìn)行初始化,防止用戶不輸入而直接跳過。其中%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í)上,這里并沒有對(duì)雙引號(hào) " 進(jìn)行檢測(cè),因?yàn)殡p引號(hào)無法在此被轉(zhuǎn)義為可用的分隔符
:: 即使是在這個(gè)程序里,不正確地使用雙引號(hào)也會(huì)引起程序異常而退出。
:: 因此,想把它做的非常人性化并不是一件容易的事情

:GetExt
set ext=.*
set /p ext=請(qǐng)輸入文件的擴(kuò)展名(不輸入則表示所有類型):
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% 類型的文件以 %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
::::::::::::::::::::::::::::::::

如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (1799人查看0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)