找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 76343|回复: 17

[文件操作] [已解决]批处理怎样提取目录名中括号内的字符串并以该字符串重命名目录下所有文件?

[复制链接]
发表于 2014-1-10 15:21:35 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-22 19:45 编辑

想求个好用的批处理,找高手。

我有一些目录是这样:     (AA55)中国风
里面有一些文件都是随机名字,比如:456487A789.jpg

想通过批处理,提取目录名中括号内的内容AA55,将目录中的文件修改成这个提取的名字,也就是改为AA55.jpg

请教高手指导。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-1-10 15:57:34 | 显示全部楼层
你没说修改哪些文件啊
哪个文件要改为AA55?
 楼主| 发表于 2014-1-14 11:17:44 | 显示全部楼层
举例:
目录是:(AA55)中国风
目录中有两个文件,名字是不规则的,比如:789.jpg,abd.png。

这些文件的扩展名都不同,现在要将目录中的所有文件都改为:目录名的括号内的文字。改完后,文件名应该是这样:AA55.jpg             AA55.png
发表于 2014-1-14 15:24:34 | 显示全部楼层
假设文件夹“(AA55)中国风”位于 C:\test\ 目录下面
请把这个批处理也放在 C:\test\ 目录下面
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /ad ^| findstr "(.*)"') do (
  4.     for /f "tokens=2 delims=()" %%j in ("%%i") do (
  5.         set str=%%j
  6.     )
  7.     for /f "delims=" %%k in ('dir /b /a-d "%%i"') do (
  8.         ren "%%i\%%k" "!str!%%~xk"
  9.     )
  10. )
复制代码

评分

参与人数 1技术 +1 收起 理由
go3up + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-1-15 08:28:16 | 显示全部楼层
DAIC你好,谢谢你提供的方案啊,不过执行结果和我的要求有偏差,可能我没说清楚。

目录名:(AA55)中国风。
里面的文件是789.jpg,abd.png。
改名后,要达到的效果是:AA55.jpg,AA55.png
也就是说,要提取括号内的文本AA55,并用这个来命名目录内的文件。

麻烦您再帮我看看,需要如何修改,非常感谢。
发表于 2014-1-15 08:40:49 | 显示全部楼层
回复 5# go3up


    具体的偏差是什么?
发表于 2014-1-15 08:42:32 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /ad ^| findstr "(.*)"') do (
  4.     for /f "delims=()" %%j in ("%%i") do (
  5.         set str=%%j
  6.     )
  7.     for /f "delims=" %%k in ('dir /b /a-d "%%i"') do (
  8.         ren "%%i\%%k" "!str!%%~xk"
  9.     )
  10. )
复制代码
 楼主| 发表于 2014-1-15 09:07:47 | 显示全部楼层
啊,回复真快,谢谢DAIC,您真心是个高手。这个问题都困扰了我好久了。现在一层目录已经有效了。

能再麻烦您一下么,当此类目录有多层的时候,如何实现多层修改?

目录:(AA55)中国风
    |
    |---- (BB66)女歌手
        |
        |---- 456.jpg      666.png

能否在第一层目录:(AA55)中国风  里,执行一次批处理,就能将下层子目录的文件也改为符合规律的文字呢?以这个例子来说,就是改为BB66.jpg了
 楼主| 发表于 2014-1-15 09:23:22 | 显示全部楼层
还有,如果不是圆括号,而是:[    ]       这样的直括号,要怎么修改呢?您有QQ么,能否直接加一下。
我的QQ:33401780
 楼主| 发表于 2014-1-15 09:38:02 | 显示全部楼层
我还有一些目录是:[STD-105]南城项目。里面的文件也是要改成直括号内的文字。我修改了一下你发的脚本:    for /f "delims=[]" %%j in ("%%i") do        但是没成功。

方便的话,加我的QQ吧:33401780,麻烦您了。
发表于 2014-1-15 09:56:58 | 显示全部楼层
回复 8# go3up
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /ad ^| findstr "(.*)"') do (
  4.     REM Level one folder
  5.     for /f "delims=()" %%j in ("%%i") do (
  6.         set strLevelOne=%%j
  7.     )
  8.     for /f "delims=" %%k in ('dir /b /a-d "%%i"') do (
  9.         ren "%%i\%%k" "!strLevelOne!%%~xk"
  10.     )
  11.     REM Level two folder
  12.     for /f "delims=" %%l in ('dir /b /ad "%%i" ^| findstr "(.*)"') do (
  13.         for /f "delims=()" %%m in ("%%l") do (
  14.             set strLevelTwo=%%m
  15.         )
  16.         for /f "delims=" %%n in ('dir /b /a-d "%%i\%%l"') do (
  17.             ren "%%i\%%l\%%n" "!strLevelTwo!%%~xn"
  18.         )
  19.     )
  20. )
复制代码

评分

参与人数 1技术 +1 收起 理由
go3up + 1 乐于助人

查看全部评分

发表于 2014-1-15 10:08:02 | 显示全部楼层
回复 10# go3up


除了delims要改,findstr也要改。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /ad ^| findstr "\[.*\]"') do (
  4.     for /f "delims=[]" %%j in ("%%i") do (
  5.         set str=%%j
  6.     )
  7.     for /f "delims=" %%k in ('dir /b /a-d "%%i"') do (
  8.         ren "%%i\%%k" "!str!%%~xk"
  9.     )
  10. )
复制代码
 楼主| 发表于 2014-1-15 10:11:31 | 显示全部楼层
谢谢,Batcher,双层目录的问题解决了。顺便问一下,只能每加一层目录,就多一段代码么?没有自动循环递归的方法么?

另外,10楼的时候我问的那个问题,也麻烦您指教一下:就是目录名为方括号的,应该如何修改代码呢?

[STD-105]南城项目     这样的目录名。需求是一样的,用方括号内的文字,修改目录内的文件名。
 楼主| 发表于 2014-1-15 10:14:47 | 显示全部楼层
太感谢了,虽然还没完全吃透,但套用您提供的这个脚本,我的工作已经能先做了。等有闲我再好好研究一下语句的内容,争取也能自己写出这样的代码。

谢谢两位大侠的帮助!
发表于 2014-1-15 10:57:04 | 显示全部楼层
回复 14# go3up


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 11:36 , Processed in 0.034837 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表