码迷,mamicode.com
首页 > 其他好文 > 详细

[批处理]批量将文件名更名为其上级目录名

时间:2015-06-17 20:02:32      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:

前言

今天从网上下载了点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   
)
View Code

——原文发表于2012-7-24 12:26

[批处理]批量将文件名更名为其上级目录名

标签:

原文地址:http://www.cnblogs.com/xxcanghai/p/4584153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!