求一段批处理代码bat---文件命名类
当前目录里面有很多文件夹,每个文件夹里面有一个文本文件我现在需要文件夹里面的文件名改成和它所在文件夹得名字一样如:文件夹名为(学生资料)就把这个文件夹里面的文件名也改成学...
当前目录里面有很多文件夹,每个文件夹里面有一个文本文件
我现在需要文件夹里面的文件名改成和它所在文件夹得名字一样
如:文件夹名为(学生资料)就把这个文件夹里面的文件名也改成学生资料
--------------------------------------------------------------------
这种文件夹很多,批量完成当前目录里面的所有文件夹
里面只有一个文件,
如果可以做到的话,在里面有多个个文件的时候,文件名后面加上数字 展开
我现在需要文件夹里面的文件名改成和它所在文件夹得名字一样
如:文件夹名为(学生资料)就把这个文件夹里面的文件名也改成学生资料
--------------------------------------------------------------------
这种文件夹很多,批量完成当前目录里面的所有文件夹
里面只有一个文件,
如果可以做到的话,在里面有多个个文件的时候,文件名后面加上数字 展开
1个回答
展开全部
以下这个批处理就可以实现你要的功能,使用方法就是把你那个最上层的文件夹拖放到这个批处理上,就会进行重命名了,注意,不要进行多次操作。
@echo off
COLOR 0a
rem 设置临时列表文件名(一般不需要修改)
set tmpListFilename=%temp%\tmpList.txt
rem 设置要处理的文件类型的后缀(例如:.txt)
set searchFileType=.*
rem 删除临时文件
call :delTmpFile
rem 生成临时列表文件
echo 正在生成文件列表,请稍候。。。
dir "%~1\*%searchFileType%" /s /a-d /b>>"%tmpListFilename%"
CLS
rem 用for命令来读取那个由dir命令生成的列表文件
FOR /F "tokens=*" %%a IN (
'FINDSTR .* "%tmpListFilename%"'
) 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
echo 正在将 %%~nxa 重命名为 !new_name!
rem 重命名
ren "%%a" "!new_name!"
)
ENDLOCAL
)
CALL :delTmpFile
PAUSE
rem 删除临时文件
:delTmpFile
del "%tmpListFilename%" /q 1>nul 2>nul
GOTO :EOF
@echo off
COLOR 0a
rem 设置临时列表文件名(一般不需要修改)
set tmpListFilename=%temp%\tmpList.txt
rem 设置要处理的文件类型的后缀(例如:.txt)
set searchFileType=.*
rem 删除临时文件
call :delTmpFile
rem 生成临时列表文件
echo 正在生成文件列表,请稍候。。。
dir "%~1\*%searchFileType%" /s /a-d /b>>"%tmpListFilename%"
CLS
rem 用for命令来读取那个由dir命令生成的列表文件
FOR /F "tokens=*" %%a IN (
'FINDSTR .* "%tmpListFilename%"'
) 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
echo 正在将 %%~nxa 重命名为 !new_name!
rem 重命名
ren "%%a" "!new_name!"
)
ENDLOCAL
)
CALL :delTmpFile
PAUSE
rem 删除临时文件
:delTmpFile
del "%tmpListFilename%" /q 1>nul 2>nul
GOTO :EOF
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询