一、清除文件名中的序号
需要处理的文件如下图所示,要求是需要删除所有的序号和序号后面的空格:
![fc434fe3ea6e6abf0fbe3f3b87f374bd.png](https://i-blog.csdnimg.cn/blog_migrate/7709dc14739e2c4c46d99b0e42f9da0f.png)
思路就是for循环所有的文件名,然后以空格为界限找到序号用空字符替换,最后重命名文件
下面的代码是写的bat处理程序代码
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s/b *.*') do (
::提取除路径外的文件名
set "str=%%~nxi"
::清除空格前的任意字符
set str=!str:* =!
::重命名 用str重新命名
ren "%%~fi" "!str!"
)
::这里可以换成exit直接退出
pause
-
setlocal enabledelayedexpansion表示设置变量延迟
-
*.*表示任意文件
-
::表示行注释
-
bat中是用set的形式设置变量的
-
set "str=%%~nxi" 表示提取不包括文件路径的文件名,并把其赋值给一个叫做str的变量
-
set str=!str:* =! 在循坏中的变量用!!引用,%VAR:str1=str2%会将VAR中的str1替换为str2,str2为空时可以达到删除str1的效果,*表示任意字符,这里str1为*和一个空格,表示把str中空格前的任意字符删去并重新赋值给str,图中效果就是删除序号和序号中的空格
-
ren代表重命名
处理结果如下图所示:
![6779742bc7a7a61e996422cf919e9c0b.png](https://i-blog.csdnimg.cn/blog_migrate/8f92bdd13cdf50f93064f52cd1ca54a5.png)
二、给文件添加序号
@echo off&setlocal enabledelayedexpansion
::设置需要添加的序号初始值为104564
set /a num=104564
for /f "delims=" %%i in ('dir /s/b *.*') do (
::提取除路劲外的文件名
set "str=%%~nxi"
::用序号加空格加原文件名赋值给str
set str=!num! !str!
::num自加1
set /a num+=1
::重命名 用str重新命名
ren "%%~fi" "!str!"
::在控制台回显修改了的文件名
echo !str!
)
::可以换成exit直接退出
pause
处理结果:
![ea59f7a758af38456a66fbac8db1de6a.png](https://i-blog.csdnimg.cn/blog_migrate/2c19aaa958b54a8a50dbd29acffa1a5a.png)