一般全选文件后重命名会自动变成 文件(1)| 文件(2)这样的格式
我们知道在批处理中要批量处理的话,那肯定是少不了用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 语句显示出来) rem 如果要进行重命名的话,把echo 去掉就可以了 echo ren "%%a" "!new_name!")ENDLOCAL)rem 删除临时文件
不用批处理可以吗?我用Total Commander很简单就能做到