求一段批处理代码bat---文件命名类

当前目录里面有很多文件夹,每个文件夹里面有一个文本文件我现在需要文件夹里面的文件名改成和它所在文件夹得名字一样如:文件夹名为(学生资料)就把这个文件夹里面的文件名也改成学... 当前目录里面有很多文件夹,每个文件夹里面有一个文本文件
我现在需要文件夹里面的文件名改成和它所在文件夹得名字一样
如:文件夹名为(学生资料)就把这个文件夹里面的文件名也改成学生资料
--------------------------------------------------------------------
这种文件夹很多,批量完成当前目录里面的所有文件夹
里面只有一个文件,
如果可以做到的话,在里面有多个个文件的时候,文件名后面加上数字
展开
 我来答
忆林子
2009-12-13 · TA获得超过2034个赞
知道大有可为答主
回答量:4079
采纳率:0%
帮助的人:2726万
展开全部
以下这个批处理就可以实现你要的功能,使用方法就是把你那个最上层的文件夹拖放到这个批处理上,就会进行重命名了,注意,不要进行多次操作。

@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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式