优秀的编程知识分享平台

网站首页 > 技术文章 正文

BAT|文件批量按要求重命名:两位数或文件夹名+两位数

nanyue 2024-08-22 17:36:28 技术文章 6 ℃

首先,操作系统本身也是可以批量重命名的:选择需要命名的文件→F2(重命名)→输入开头的字符,如n→回车,得到的批量重命名的效果如下:

如果要求只用两位数字来重命名,可以写一个批处理文件:

setlocal enabledelayedexpansion
set n=0
set "lj=%~p0"
set "lj=%lj:\= %"
for %%a in (%lj%) do set wjj=%%a
echo 文件夹是:%wjj%
for /f "tokens=1,2 usebackq delims=." %%A in (`dir /o:n /b`) do (
	if not "%%~nA"=="%~n0" ( rem 不更改bat文件的名称;
	if not "%%B"=="html" ( rem 不更改html文件的名称;
	if not "%%B"=="bat" ( rem 不更改html文件的名称;
	if not "%%A.%%B"=="%%A" ( rem 不更改文件夹的名称;
		set /a n=n+1
		if !n! lss 10 (
			ren "%%A.%%B" "%wjj%0!n!.%%B"
		) else (
			ren "%%A.%%B" "%wjj%!n!.%%B"
		)
	)
	)
	)
	)
)
::set /p name=""		"="前后不能有空格;
::) else (		"else"前后必须有空格;
:: if !n! lss 10 ( 此处符号必须是"!",而不是"%";

效果如下:

如果想在数字的前面加上文件夹的名字,可以稍微改一下批处理文件:

setlocal enabledelayedexpansion
set n=0
set "lj=%~p0"
set "lj=%lj:\= %"
for %%a in (%lj%) do set wjj=%%a
echo 文件夹是:%wjj%
for /f "tokens=1,2 usebackq delims=." %%A in (`dir /o:n /b`) do (
	if not "%%~nA"=="%~n0" ( rem 不更改bat文件的名称;
	if not "%%B"=="html" ( rem 不更改html文件的名称;
	if not "%%B"=="bat" ( rem 不更改html文件的名称;
	if not "%%A.%%B"=="%%A" ( rem 不更改文件夹的名称;
		set /a n=n+1
		if !n! lss 10 (
			ren "%%A.%%B" "%wjj%0!n!.%%B"
		) else (
			ren "%%A.%%B" "%wjj%!n!.%%B"
		)
	)
	)
	)
	)
)

效果如下:

-End-

最近发表
标签列表