怎样实现批量重命名文件名为父文件夹名字加序号
1个回答
展开全部
我们知道在批处理中要批量处理的话,那肯定是少不了用for命令的。
现在我们把他的要求巧清棚分解成两部分
1、先用dir命令把所有要进行重命名的文件的全路径列出来发送到一个临时的文本文件。
(供下面的for语句来读取)
2、用for命令来读取那个由dir命令生成的列表文件
a、在循环的过程中取得上级文件夹名
b、取得文件名
c、ren "源文件名" "上级文件夹名文件名"
上面就是伪代码,接下来是批处理的实现代码@echo offrem 生成临时列表文件
dir d:\*.txt /s /a-d /btmp.txt
rem 用for命令来读取那个由dir命令生成的列表文件
FOR /F "tokens=*" %%a IN (
'more tmp.txt') DO (rem 用Setlocal来启用正返环境变量延迟功能
Setlocal EnableDelayedExpansion
rem 取得路径包括了最后一个斜线\
set tempPath=%%~dpa
rem 把路径中的最后一个斜线去掉
set tempPath=!tempPath:~,-1!
rem 在for命令中来扩展取得路径名
FOR %%A IN (
"!tempPath!") DO (rem 扩展取得上级目录名
set filePath=%%~nA
rem 新的文件名为: 上级目录名文件名
set new_name=!filePath!%%~nxa
rem 重孝则命名文件名(为了安全,这里只是用echo把命名的
rem 语句显示出来)
现在我们把他的要求巧清棚分解成两部分
1、先用dir命令把所有要进行重命名的文件的全路径列出来发送到一个临时的文本文件。
(供下面的for语句来读取)
2、用for命令来读取那个由dir命令生成的列表文件
a、在循环的过程中取得上级文件夹名
b、取得文件名
c、ren "源文件名" "上级文件夹名文件名"
上面就是伪代码,接下来是批处理的实现代码@echo offrem 生成临时列表文件
dir d:\*.txt /s /a-d /btmp.txt
rem 用for命令来读取那个由dir命令生成的列表文件
FOR /F "tokens=*" %%a IN (
'more tmp.txt') DO (rem 用Setlocal来启用正返环境变量延迟功能
Setlocal EnableDelayedExpansion
rem 取得路径包括了最后一个斜线\
set tempPath=%%~dpa
rem 把路径中的最后一个斜线去掉
set tempPath=!tempPath:~,-1!
rem 在for命令中来扩展取得路径名
FOR %%A IN (
"!tempPath!") DO (rem 扩展取得上级目录名
set filePath=%%~nA
rem 新的文件名为: 上级目录名文件名
set new_name=!filePath!%%~nxa
rem 重孝则命名文件名(为了安全,这里只是用echo把命名的
rem 语句显示出来)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |