页首Html代码

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

前言

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

posted @ 2015-06-17 19:08  沧海月明FE  阅读(5098)  评论(0编辑  收藏  举报