[批处理]批量将文件名更名为其上级目录名
前言
今天从网上下载了点ASP.NET的视频,但是由于是免费的,所以有很多垃圾信息
更讨厌的是,每个文件名也都有非常长的一大长串垃圾广告,需要批量删除这些文件名中的广告字符串
如图:
目的
要做一个程序来批量修改文件名,将一个文件夹下所有的文件的文件名,修改为其上级目录的名字
注意不是修改更名为同一级目录名,而把自己的名字更名为自己所在的上一级目录的名字
如上图,目的是把每个视频文件改名为其所在目录名
使用方法
把要执行的包含所有文件的总文件夹拖动到bat中,会显示执行效果,如果确认则真正执行
处理完成后效果图:
所有文件都更名为其上级目录名
注意
1,当文件夹内有多个文件,且扩展名相同,则会发生文件名冲突错误,会导致从当前文件夹内从第二文件起之后的文件都不更名
请自行编辑文件过滤信息,以保证每个文件夹下被更名文件都是唯一的
2,当文件名中含有特殊字符时。如! 或&符号等会导致更名失败,可以先执行以下命令
for /f "delims=" %i in ('dir /s /b /a:-d 【要处理文件的目录】\*.*') do @ren "%i" "a%~xi"
先把所有文件的文件名都更名为任意字符,然后再批量修改即可
批处理代码,保存至bat文件中运行即可:
@echo off :start setlocal enabledelayedexpansion set isrun=n echo 请把包含要处理的文件的[文件夹]拖动到此处,回车确定 set dir=n&set /p dir= if "%dir:"=%"=="n" cls&goto start cls&echo ==================================== :run for /f "delims=" %%i in ('dir /s /b /a:-d %dir%\*.*') do ( set full=%%~dpnxi set exten=%%~xi set path=%%~dpi set path=!path:~0,-1! for /f "delims=" %%j in ("!path!") do set path=%%~nj if /i "!isrun!"=="n" ( echo ren "!full!" "!path!!exten!" ) else ( ren "!full!" "!path!!exten!" echo 更名为:"!path!!exten!" ) ) echo ==================================== if /i "%isrun%"=="n" ( echo 即将执行以上操作,是否执行[Y/N] set isrun=n&set /p isrun= if /i "!isrun!"=="y" ( goto run ) else ( cls&goto start ) ) else ( echo.&echo 更名完成! echo 任意键返回&pause>nul&cls&goto start )
——原文发表于2012-7-24 12:26
如果您认为本文对得起您所阅读他所花的时间,欢迎点击右下角↘ 推荐。您的支持是我继续写作最大的动力,谢谢
作者:沧海月明
出处:http://www.cnblogs.com/xxcanghai/
本文地址:http://www.cnblogs.com/xxcanghai/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。