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

前言

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

时间: 2024-08-03 14:06:28

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

Windows批处理-批量替换文件名

@echo off @rem 找到当前目录及子目录*.zip的文件 for /f "delims=" %%i in ('dir /s/b *.zip') do ( set "foo=%%i" @REM oldString替换为newString call,set foo=%%foo:oldString=newString%% @rem 移动文件达到修改文件名的目的 call,move "%%i" "%%foo%%" ) pau

批处理系列(6) - 批量替换文件名

结合本系列文章第一篇,看本文. 保存本代码到替换文件名[便捷拖入].bat, 将一个没有空格文件名的文本文件拖放在bat文件图标上,按提示执行. @echo off @REM @Author: [email protected] title 批量替换文件名 by:小可([email protected]) :GTCONTINUE set /a count=%count%+1 set /p oldStr=原字符: set /p newStr=替换成: for /f "tokens=*"

JAVA批量修改文件名

今天看传智播客的JAVA视频,每次都是接着以前的看的,今天想找特定的一个视频温习一下,发现下载的视频每个视频的名字都很长,以至于后面能区分的那一部分都被忽略了,刚学了点JAVA,突然想着能不能把文件名前面相同的部分都给去掉,这样后面关于视频所讲内容的那一部分就可以显示出来了.好吧,试一下吧. 想了一下思路,首先应该找到要修改的文件所在的目录,获取要修改文件的文件名,然后得到删除不要的那一部分的文件名,给文件重命名完毕. 鉴于初学,很多地方还不是很懂,于是从网上了查了一段代码. import ja

CMD命令实现批量修改文件名

cmd命令批量修改文件名:  (批量去掉下载电影后的前缀) @echo off for /f "delims=" %%a in ('dir /b/s/a-d [阳光电影www.ygdy8.com].*') do (     set "str=%%~nxa"     setlocal enabledelayedexpansion     ren "%%a" "!str:~20!"     endlocal ) 批量删除文件名特定

如何用python从文中获取文件名再用正则表达式批量修改文件名

第零步:问题的提出 我在网上购买了星火英语的六级晨读美文100篇(六级早已高分飘过,不过很喜欢这些文章,买来重新品味),但是发现其文章的命名都为01.txt或10.txt等.为了便于检索需要修改文件名称. 第一步:从文件中取出文件名. 我发现txt文件的第一行为文件名,格式为如:Passage 3. Three Passions I Have Lived for, 后面还有几个换行符.写下如下代码进行第一步修改: import os x = 1 while x < 101: if x < 10

Linux中批量修改文件名

有时候我们有一个目录下面的文件名都需要重新命令 如: 以下有十个学生完成的脚本,现在需要将finish改为ing [[email protected] test]# touch student_{01..10}_finish.sh [[email protected] test]# ls student_* student_01_finish.sh  student_03_finish.sh  student_05_f student_02_finish.sh  student_04_finis

shell脚本:批量修改文件名(删除文件名中字符)

shell脚本:批量修改文件名(文件名中添加字符) 上一篇写过批量修改文件名(文件名中添加字符),工作中还存在这样的需求,批量修改文件名,删除文件名中的某些字符: 举例如下:批量改名,删除文件名中多余字符 目录下文件名为如下,要求去掉_finished. stu_102999_1_finished.jpg stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg stu_102999_5_finis

MFC批量修改文件名工具

1批量修改文件名描述 1.1功能描述 批量修改同一文件夹下文件名字,可以定义一个新名字,后面接着文件从0开始的序号. 1.2所需技术 CFileDialog,CString方法操作得到所需,rename 2批量修改文件名运行流程 3批量修改文件名详细设计 3.1添加文件按钮响应OnAddFile 按下"添加文件"按钮后,打开一个文件对话框objFileDlg.但是要设置objFileDlg最大文件名缓冲区.然后获得第一个文件的起始位置,依次把全部的文件完整名添加到列表控件中,这里列表控

批处理批量删除90个用户

rem create90.bat rem 用net user命令创建90用户 for /L %%i in (1,1,9) do net user k0%%i   /delete for /L %%i in (10,1,90) do net user k%%i   /delete 批处理批量删除90个用户,布布扣,bubuko.com