日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

(建議用電腦瀏覽本文效果更好)

自己編寫的一個(gè)DOS批處理,用于批量修改文件名或擴(kuò)展名。

實(shí)現(xiàn)邏輯

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

操作:批處理運(yùn)行后會(huì)在當(dāng)前文件夾下生成一個(gè)錯(cuò)誤信息文件batResult.txt

字符替換:

示例一:將文件名中的“5”替換成“99”

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

原文件

運(yùn)行批處理文件batRename2.bat:

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

結(jié)果:

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

示例二:將“廢柴兄弟”改成“上海灘”,并將擴(kuò)展名改為“bat”

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

操作:

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

結(jié)果:

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

改成新文件名:將所有擴(kuò)展名為bat文件改成新文件名newBAT,后綴改為ttt

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

操作:

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

結(jié)果:

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 


電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

程序?qū)崿F(xiàn)方法一

@echo off

rem 切換為utf-8編碼
::Chcp 65001
::切換中文
Chcp 936 > nul

rem 啟用延緩環(huán)境變量擴(kuò)展
setlocal EnableDelayedExpansion

echo **可修改當(dāng)前文件夾下所有的文件名或字符及擴(kuò)展名**
echo *****將此批處理文件拷入需要修改的文件夾中******
set option=9
set cnt=0
set skipChar=/*?:"<>|^!

echo **   請選擇操作...        **
echo ** 1 替換部分字符或擴(kuò)展名 **
echo ** 0 換成全新文件名       **

:selectOption
set /p option= 》》請選擇操作選項(xiàng):
if %option%==1 ( goto endSelectOption
) else if %option%==0 (goto endSelectOption) 
set /a cnt+=1
if %cnt% GTR 2 (goto end) else (goto selectOption)
:endSelectOption

echo ------要修改的原文件信息,回車結(jié)束輸入-------
set retVal=0

:inputOfi
set oldFile=
set retVal=0
if %option%==1 (  set /p oldFile="》》請輸入要替換的文件名/文字(必輸入):"
) else (set /p oldFile="》》請輸入要修改的文件名/文字(不輸入則包括當(dāng)前文件夾下所有文件): ")

if %option%==1 (if "%oldFile%"=="" echo 被替換字符不能為空!& goto inputOfi 
) else (if "%oldFile%"=="*"  goto inputOfe
	if "%oldFile%"=="" ( set oldFile=*
			     goto inputOfe))

@echo !oldFile! | findstr "[!skipChar!]" > nul
if "!errorlevel!"=="0" (echo !!輸入的文件名/字符"!oldFile!"錯(cuò)誤!!
		rem 如果用%skipChar%則出現(xiàn)“此時(shí)不應(yīng)有 >”的錯(cuò)誤提示。
		echo !!字符中不能包含"!skipChar!"中的字符 !!
		goto inputOfi)

:inputOfe
set oldFExt=
set retVal=0
set /p oldFExt= 》》請輸入原文件擴(kuò)展名(不輸入則包括所有擴(kuò)展名):

if "%oldFExt%"=="*" goto endInputOfe
if "%oldFExt%"=="" (set oldFExt=*
) else (@echo !oldFExt!| findstr "[^0-9A-Za-z]" > nul
	if "!errorlevel!"=="0" (
			echo !!擴(kuò)展名"%oldFExt%"錯(cuò)誤!!
			echo !!請輸入0-9,A-Z,a-z之間的字符!!
			goto inputOfe))
:endInputOfe
echo === 查找范圍:"*!oldFile!*.!oldFExt!" ===

echo -----新的文件信息,回車結(jié)束輸入------
:inputNfi
set newFile=
set retVal=0
set /p newFile="》》請輸入新的文件名/字符(必輸入):"

if not "%newFile%"=="" (
	@echo !newFile! | findstr "[!skipChar!]" > nul
	if "!errorlevel!"=="0" (
		echo !!輸入的文件名/字符"%newFile%"錯(cuò)誤!!
		echo !!字符中不能包含"!skipChar!"中的字符 !!
		goto inputNfi)
) else (echo 新的文件名/字符不能為空!& goto inputNfi)

:inputNfe
set newFExt=
set retVal=0
if %option%==1 (if "!oldFExt!"=="*" (goto endInputNfe ))
set /p newFExt="》》輸入新的文件擴(kuò)展名(不輸入則保留原擴(kuò)展名):")

if "!newFExt!" neq "" (
	@echo !newFExt!| findstr "[^0-9A-Za-z]" > nul
	if "!errorlevel!"=="0" (
		echo !!   擴(kuò)展名"%newFExt%"錯(cuò)誤   !!
		echo !!請輸入0-9,A-Z,a-z之間的字符!!
		goto inputNfe)
)
:endInputNfe

echo === 查找范圍: "*!oldFile!*.!oldFExt!" ===
if %option%==1 (if "%newFExt%" neq "" (echo === 替換為:   "*!newFile!*.!newFExt!" === 
		) else (echo === 替換為:   "*!newFile!*.原擴(kuò)展名" === )
) else (if "%newFExt%"=="" (echo === 新的內(nèi)容為:"!newFile!000N.原擴(kuò)展名" ===
	) else (echo === 新的內(nèi)容為:"!newFile!000N.!newFExt!" ===))

rem --------------------處--理-------------------------
set ttl=0
set a=1
set aStr=0001

set /p confirm=請確認(rèn)是否修改?(輸入:Y-是,N-否)
if "%confirm%" neq "Y" (if "%confirm%" neq "y" goto end)

rem set oft="%oft%.%oldFExt%"
for /f "delims="  %%i in ( 'dir /b /a-d "*%oldFile%*.%oldFExt%" ' ) do (
    if "%oldFile%"=="*" (@echo %%~ni | findstr /i ".%oldFile%" > nul
    ) else (@echo %%~ni | findstr /iL /c:"%oldFile%" > nul)
    if "!errorlevel!"=="0" (
    rem 不需修改當(dāng)前批處理文件名(本身)
    if not "%%~ni"=="%~n0" (
	set /a ttl+=1
	::只有文件名,如test.txt時(shí),只有test
       	set file=%%~ni
	::只有擴(kuò)展名,如test.txt時(shí),只有.txt
	set ext=%%~xi
	
	if !option!==1 (set file=!file:%oldFile%=%newFile%!
		if "%newFExt%"=="" (
			ren "%%i" "!file!!ext!" 1>> batResult.txt 2<&1
			if "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!!ext!"-- >>batResult.txt
			) else (set /a a+=1)
		) else (ren "%%i" "!file!.%newFExt%" 2>> batResult.txt
			if "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!.%newFExt%"-- >>batResult.txt
			) else (set /a a+=1))
	) else (set file=%newFile%!aStr!
		if "%newFExt%"=="" (
			ren "%%i" "!file!!ext!" 1>> batResult.txt 2<&1
			if "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!!ext!"-- >>batResult.txt
			) else (set /a a+=1
				if !a!  LSS 10 (set aStr=000!a!
				) else if !a! LSS 100  (set aStr=00!a!
				) else if !a! LSS 1000 (set aStr=0!a!))
		) else (ren "%%i" "!file!.%newFExt%" 2>> batResult.txt
			if "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!.%newFExt%"-- >>batResult.txt
			) else (set /a a+=1
				if !a!  LSS 10 (set aStr=000!a!
				) else if !a! LSS 100  (set aStr=00!a!
				) else if !a! LSS 1000 (set aStr=0!a!))
		)
	)
rem	echo a=!a!,oldFile-^> newFile:"%%i" -^> "!file!.%newFExt%"
    )
    )
)
:end
set /a a-=1
echo 總處理文件數(shù):!ttl! ,處理成功數(shù):!a!
endlocal
pause
goto :eof

程序?qū)崿F(xiàn)方法二:與方法一區(qū)別在于判斷字符的合法性方面

@echo off
rem 切換為utf-8編碼
::Chcp 65001
::切換中文
Chcp 936 > nul

rem 啟用延緩環(huán)境變量擴(kuò)展
setlocal EnableDelayedExpansion

echo **可修改當(dāng)前文件夾下所有的文件名或字符及擴(kuò)展名**
echo *****將此批處理文件拷入需要修改的文件夾中******
set option=9
set cnt=0
set skipChar=/*?:"<>|^!

echo **   請選擇操作...        **
echo ** 1 替換部分字符或擴(kuò)展名 **
echo ** 0 換成全新文件名       **

:selectOption
set /p option= 》》請選擇操作選項(xiàng):
if %option%==1 ( goto endSelectOption
) else if %option%==0 (goto endSelectOption) 
set /a cnt+=1
if %cnt% GTR 2 (goto end) else (goto selectOption)
:endSelectOption

echo ------要修改的原文件信息,回車結(jié)束輸入-------
set retVal=0

:inputOfi
set oldFile=
set retVal=0
if %option%==1 (  set /p oldFile="》》請輸入要替換的文件名/文字(必輸入):"
) else (set /p oldFile="》》請輸入要修改的文件名/文字(不輸入則包括當(dāng)前文件夾下所有文件): ")

if %option%==1 (if "%oldFile%"=="" echo 被替換字符不能為空!& goto inputOfi 
) else (if "%oldFile%"=="*"  goto inputOfe
	if "%oldFile%"=="" ( set oldFile=*
			     goto inputOfe))
rem echo oldFile="!oldFile!",!oldFile!,"%oldFile%",%oldFile%
rem call :checkFileChar "%oldFile%"  %skipChar%  oldFile中如有!用%會(huì)出錯(cuò).
call :checkFileChar "!oldFile!" %skipChar%
if !retVal!==1 (echo !!輸入的文件名/字符"%oldFile%"錯(cuò)誤!!
		rem 如果用%skipChar%則出現(xiàn)“此時(shí)不應(yīng)有 >”的錯(cuò)誤提示。
		echo !!字符中不能包含"!skipChar!"中的字符 !!
		goto inputOfi)

:inputOfe
set oldFExt=
set retVal=0
set /p oldFExt= 》》請輸入原文件擴(kuò)展名(不輸入則包括所有擴(kuò)展名):

if "%oldFExt%"=="*" goto endInputOfe
if "%oldFExt%"=="" (set oldFExt=*
) else (call :checkExtChar "!oldFExt!" "O"
	if !retVal!==1 (echo !!擴(kuò)展名"%oldFExt%"錯(cuò)誤!!
			echo !!請輸入0-9,A-Z,a-z之間的字符!!
			goto inputOfe))
:endInputOfe
echo === 查找范圍:"*!oldFile!*.!oldFExt!" ===

echo -----新的文件信息,回車結(jié)束輸入------
:inputNfi
set newFile=
set retVal=0
set /p newFile="》》請輸入新的文件名/字符(必輸入):"

if not "%newFile%"=="" (call:checkFileChar "!newFile!" %skipChar%
	if !retVal!==1 (echo !!輸入的文件名/字符"%newFile%"錯(cuò)誤!!
			echo !!字符中不能包含"!skipChar!"中的字符 !!
			goto inputNfi) 
) else (echo 新的文件名/字符不能為空!& goto inputNfi)

:inputNfe
set newFExt=
set retVal=0
if %option%==1 (if "!oldFExt!"=="*" (goto endInputNfe ))
set /p newFExt="》》輸入新的文件擴(kuò)展名(不輸入則保留原擴(kuò)展名):")

if "!newFExt!" neq "" (call:checkExtChar "!newFExt!" "N"
	if !retVal!==1 (echo !!   擴(kuò)展名"%newFExt%"錯(cuò)誤   !!
			echo !!請輸入0-9,A-Z,a-z之間的字符!!
			goto inputNfe)
)
:endInputNfe

echo === 查找范圍: "*!oldFile!*.!oldFExt!" ===
if %option%==1 (if "%newFExt%" neq "" (echo === 替換為:   "*!newFile!*.!newFExt!" === 
		) else (echo === 替換為:   "*!newFile!*.原擴(kuò)展名" === )
) else (if "%newFExt%"=="" (echo === 新的內(nèi)容為:"!newFile!000N.原擴(kuò)展名" ===
	) else (echo === 新的內(nèi)容為:"!newFile!000N.!newFExt!" ===))

rem --------------------處--理-------------------------
set ttl=0
set a=1
set aStr=0001

set /p confirm=請確認(rèn)是否修改?(輸入:Y-是,N-否)
if "%confirm%" neq "Y" (if "%confirm%" neq "y" goto end)

rem set oft="%oft%.%oldFExt%"
for /f "delims="  %%i in ( 'dir /b /a-d "*%oldFile%*.%oldFExt%" ' ) do (
    if "%oldFile%"=="*" (@echo %%~ni | findstr /i ".%oldFile%" > nul
    ) else (@echo %%~ni | findstr /iL /c:"%oldFile%" > nul)
    if "!errorlevel!"=="0" (
    rem 不需修改當(dāng)前批處理文件名(本身)
    if not "%%~ni"=="%~n0" (
	set /a ttl+=1
	::只有文件名,如test.txt時(shí),只有test
       	set file=%%~ni
	::只有擴(kuò)展名,如test.txt時(shí),只有.txt
	set ext=%%~xi
	
	if !option!==1 (set file=!file:%oldFile%=%newFile%!
		if "%newFExt%"=="" (
			ren "%%i" "!file!!ext!" 1>> batResult.txt 2<&1
			if "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!!ext!"-- >>batResult.txt
			) else (set /a a+=1)
		) else (ren "%%i" "!file!.%newFExt%" 2>> batResult.txt
			if "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!.%newFExt%"-- >>batResult.txt
			) else (set /a a+=1))
	) else (set file=%newFile%!aStr!
		if "%newFExt%"=="" (
			ren "%%i" "!file!!ext!" 1>> batResult.txt 2<&1
			if "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!!ext!"-- >>batResult.txt
			) else (set /a a+=1
				if !a!  LSS 10 (set aStr=000!a!
				) else if !a! LSS 100  (set aStr=00!a!
				) else if !a! LSS 1000 (set aStr=0!a!))
		) else (ren "%%i" "!file!.%newFExt%" 2>> batResult.txt
			if "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!.%newFExt%"-- >>batResult.txt
			) else (set /a a+=1
				if !a!  LSS 10 (set aStr=000!a!
				) else if !a! LSS 100  (set aStr=00!a!
				) else if !a! LSS 1000 (set aStr=0!a!))
		)
	)
rem	echo a=!a!,oldFile-^> newFile:"%%i" -^> "!file!.%newFExt%"
    )
    )
)
:end
set /a a-=1
echo 總處理文件數(shù):!ttl! ,處理成功數(shù):!a!
endlocal
pause
goto :eof

rem ---------檢查文件名-------參數(shù)帶雙引號(hào)---------------
:checkFileChar
rem set proVar=%1& set proVar=!proVar:~1,-1!	也可寫成這樣
set proVar=%~1
rem set proVar=!proVar:~1,-1! 去掉雙引號(hào),效果同%~1
set noCharTmp=%2
set cnt2=0
set retVal=0

:cyc2
if "!proVar:~%cnt2%,1!"==""  (set retVal=0&goto :eof)
rem echo 第%cnt2%個(gè)字符:"!proVar:~%cnt2%,1!","!proVar!",%proVar%,傳入?yún)?shù):%1,最后一個(gè)字符:'%proVar:~-1%'

set cnt3=0
:cyc3
rem echo 第%cnt3%個(gè)排除字符:"!noCharTmp:~%cnt3%,1!"+
if "!noCharTmp:~%cnt3%,1!"=="" (set retVal=0&set /a cnt2+=1 &goto cyc2)
if "!noCharTmp:~%cnt3%,1!"=="!proVar:~%cnt2%,1!"  (
			set retVal=1
			goto :eof
) else (set /a cnt3+=1
	goto cyc3 )
rem ---------檢查擴(kuò)展名-------參數(shù)帶雙引號(hào)--------------
rem ----- 只能輸入0-9,A-Z,a-z,(原文件加:*、?) -----------
:checkExtChar
rem set proVar2=%1 & set proVar2=!proVar2:~1,-2! 此行問題:在%1 &間有一個(gè)空格
set proVar2=%~1
rem set proVar2=%proVar2:~1,-1%
set flag=%2
set cnt4=0
set retVal=0
:cyc4
rem echo %cnt4% + "!proVar2:~%cnt4%,1!"
if "!proVar2:~%cnt4%,1!"==""     (set retVal=0&goto :eof)
rem if %flag%=="O" (
rem	if "!proVar2:~%cnt4%,1!"=="*" (set /a cnt4+=1&goto cyc4
rem	) else if "!proVar2:~%cnt4%,1!"=="?" (set /a cnt4+=1&goto cyc4) )

if "!proVar2:~%cnt4%,1!" LSS "0" (set retVal=1&goto :eof)
if /i "!proVar2:~%cnt4%,1!" GTR "z" (set retVal=1&goto :eof)
if "!proVar2:~%cnt4%,1!" GTR "9" (
	if /i "!proVar2:~%cnt4%,1!" LSS "a" (set retVal=1&goto :eof))

rem if "!proVar2:~%cnt4%,1!" GTR "Z" (
rem 	if "!proVar2:~%cnt4%,1!" LSS "a" (set retVal=1&goto :eof))
rem echo %cnt4% + "!proVar2:~%cnt4%,1!" + 4
set /a cnt4+=1
goto cyc4

注意:要確保將此批處理文件放在需要改名的文件夾下,盡量不要輸入DOS命令中的特殊字符,如 *./^ | 等。

findstr相關(guān)補(bǔ)充說明:默認(rèn)啟用正則表達(dá)式

"/L" :如果要關(guān)閉正則表達(dá)式,即把^$<.*等當(dāng)成普通的字符,則用/L開關(guān)

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

此處的$不在用于判斷“ese”是最后字符了

".*" : 代表所有

"/c:" : 使用指定字符串作為文字搜索字符串,搜索字符串中的"."或"*"等符號(hào)不再是通配符,只是普通的句號(hào)、星號(hào)字符

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

"/d" : 從用分號(hào)分隔的指定目錄里查找所有txt文件里的“hello”字符串

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

"/a:attr" : 指定目錄和文件名的顏色,有兩個(gè)字符時(shí),第一個(gè)表示底色,第二個(gè)表示字體顏色,查color /?可知顏色代碼如下:

  • 0 = 黑色 8 = 灰色
  • 1 = 藍(lán)色 9 = 淡藍(lán)色
  • 2 = 綠色 A = 淡綠色
  • 3 = 淺綠色 B = 淡淺綠色
  • 4 = 紅色 C = 淡紅色
  • 5 = 紫色 D = 淡紫色
  • 6 = 黃色 E = 淡黃色
  • 7 = 白色 F = 亮白色
電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

另外,下一目錄為什么接在上一行的后面?是因?yàn)樯弦恍凶詈鬀]有回車引起的

"/f:file" : 將要查找范圍內(nèi)的文件名存放在一個(gè)文件中“file”中,從這些文件中搜索“hello”

電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 


電腦里批量修改文件名,批處理實(shí)現(xiàn)及詳細(xì)說明,findstr補(bǔ)充說明

 

findstr的詳細(xì)用法請參照:DOS批處理命令:強(qiáng)大的find及findstr查找字符串搜索,坑也不少

分享到:
標(biāo)簽:文件名 修改
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評(píng)定2018-06-03

通用課目體育訓(xùn)練成績評(píng)定