. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 回复
 
主题工具
阿汪
 
阿汪 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 4,188 声望值: 3
精华: 0,解答: 24
#1 旧 2019-10-12, 17:05:09 默认 已解答: 【求助】如何批量删除文件夹名称中的特定部分
阿汪 当前离线  

Windows硬盘上成百上千的文件夹
名称都是一串英文跟着括号中文
类似下面这样:

ABC (中文1)
BCD (中文2)
CDE (中文3)
DEF (中文4)

借助什么工具,可以批量删除文件夹名称中英文后面的括号以及括号里面的字符?

此帖于 2019-10-13 17:53:29 被 阿汪 编辑. .


Computers make very fast,
very accurate mistakes.
回复时引用此帖
最佳解答为:MacOS
用支持正则的重命名工具,例如TC
你要确认确实是方括号,而且没嵌套,是的话
\s\[[^\]]*\]$
如果还匹配圆括号,也没嵌套,就加成类似这样,大括号、引号也可以类似的加
\s(\[[^\]]*\]|\([^\)]*\))$
有嵌套正常要写递归,但不清楚工具能不能支持
hnlyzhd
 
hnlyzhd 的头像
热心会员
 
资 料:
注册日期: Dec 2006
帖子: 5,514 声望值: 4
精华: 5,解答: 81
#2 旧 2019-10-12, 17:57:22 默认
hnlyzhd 当前离线  

括号前面的英文长度不固定吧?

括号是英文半角字符,还是中文全角字符?

所有要处理的文件夹都是类似楼主给出的格式吗?

如果是楼主给出的格式,用批处理的for循环很容易搞定。
回复时引用此帖
阿汪
 
阿汪 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 4,188 声望值: 3
精华: 0,解答: 24
#3 旧 2019-10-12, 19:36:22 默认
阿汪 当前离线  

引用:
作者: hnlyzhd 查看帖子
括号前面的英文长度不固定吧?

括号是英文半角字符,还是中文全角字符?

所有要处理的文件夹都是类似楼主给出的格式吗?

如果是楼主给出的格式,用批处理的for循环很容易搞定。
例如:
代码:
VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3 [Hi-Fi年代1 怀念战友]
都是这种格式

全是[]这样的括号,里面可能包含英文字母或符号(-),[]之前有1空格,英文部分长度不固定

问题也可简化为批量删除文件夹名称中空格及其后的部分

此帖于 2019-10-13 17:54:19 被 阿汪 编辑. .
回复时引用此帖
MacOS
 
MacOS 的头像
热心会员
 
资 料:
注册日期: Aug 2002
帖子: 13,236 声望值: 5
精华: 0,解答: 128
#4 旧 2019-10-12, 20:05:49 默认
MacOS 当前离线  

用支持正则的重命名工具,例如TC
你要确认确实是方括号,而且没嵌套,是的话
\s\[[^\]]*\]$
如果还匹配圆括号,也没嵌套,就加成类似这样,大括号、引号也可以类似的加
\s(\[[^\]]*\]|\([^\)]*\))$
有嵌套正常要写递归,但不清楚工具能不能支持


HIDDEN MESSAGE LEVEL 3
14863 159357 789 159357 3245687 3684
回复时引用此帖
TY136
 
TY136 的头像
超级会员
 
资 料:
注册日期: Apr 2002
帖子: 1,215 声望值: 8
精华: 0,解答: 9
#5 旧 2019-10-13, 11:43:28 默认
TY136 当前离线  

提取文件夹名到EXCEL
在另一列手动输入一个更名后的文件夹名
Ctrl+E得到所有更名后的文件夹名

在另一列用公式得到这样的内容:ren 老文件夹名 新文件夹名
将这一列的内容复制到记事本,另存为.BAT文件

将.BAT文件复制到目标文件夹,双击运行,搞定。
回复时引用此帖
michael80
 
michael80 的头像
高级会员
 
资 料:
注册日期: May 2011
帖子: 879 声望值: 4
精华: 0,解答: 25
#6 旧 2019-10-13, 12:27:33 默认
michael80 当前离线  

引用:
作者: TY136 查看帖子
提取文件夹名到EXCEL
在另一列手动输入一个更名后的文件夹名
Ctrl+E得到所有更名后的文件夹名

在另一列用公式得到这样的内容:ren 老文件夹名 新文件夹名
将这一列的内容复制到记事本,另存为.BAT文件

将.BAT文件复制到目标文件夹,双击运行,搞定。
这个方法简单可行。
回复时引用此帖
princenigma
 
princenigma 的头像
高级会员
 
资 料:
注册日期: Sep 2001
帖子: 669 声望值: 3
精华: 0,解答: 3
#7 旧 2019-10-13, 14:53:54 默认
princenigma 当前离线  

ant renamer
回复时引用此帖
foxme
 
foxme 的头像
核心会员
 
资 料:
注册日期: Mar 2001
帖子: 3,835 声望值: 3
精华: 0,解答: 26
#8 旧 2019-10-13, 15:27:12 默认
foxme 当前离线  

引用:
作者: 阿汪 查看帖子
Windows硬盘上成百上千的文件夹
名称都是一串英文跟着括号中文
类似下面这样:

ABC (中文1)
BCD (中文2)
CDE (中文3)
DEF (中文4)

借助什么工具,可以[COLOR="darkred"]批量删除[/COLOR...
everything

选中你需要改名的文件夹
按f2键调出改名框

原名称: %1(%2)
新名称: %1

检查新文件名预览, 如果无误, 点下OK

回复时引用此帖
xclimbing
 
xclimbing 的头像
普通会员
 
资 料:
注册日期: Jan 2019
帖子: 101 声望值: 0
精华: 0,解答: 1
#9 旧 2019-10-13, 16:48:44 默认
xclimbing 当前离线  

由于涉及到空格等特殊字符,一旦同一目录路径中(包括上级文件夹路径)出现两个空格,例如:d:\A B\CDEF [jlkjljl]\这种结构,下面批处理就无法正常运行。如果去掉dir中的/R(循环处理子目录)选项,只处理当前目录,问题应该会小很多。

改名前的目录结构:
├─a
│ └─VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3 [Hi-Fi年代1 怀念战友]
├─b
│ └─VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3 [Hi-Fi年代1 怀念战友]
└─VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3 [Hi-Fi年代1 怀念战友]


批处理代码:
代码:
@echo off
for /f "usebackq tokens=1,* delims= " %%a in (`dir /s/ad/b "* [*.*"`) do (
echo move /y "%%a %%b" "%%a"
move /y "%%a %%b" "%%a")
批处理运行过程及结果:
D:\Downloads\test>moveit
move /y "D:\Downloads\test\VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3 [Hi-Fi年代1 怀念战友]" "D:\Downloa
ds\test\VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3"
移动了  1 个目录。
move /y "D:\Downloads\test\a\VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3 [Hi-Fi年代1 怀念战友]" "D:\Downl
oads\test\a\VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3"
移动了  1 个目录。
move /y "D:\Downloads\test\b\VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3 [Hi-Fi年代1 怀念战友]" "D:\Downl
oads\test\b\VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3"
移动了  1 个目录。

├─a
│ └─VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3
├─b
│ └─VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3
└─VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3


此帖于 2019-10-13 16:51:53 被 xclimbing 编辑. .
回复时引用此帖
阿汪
 
阿汪 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 4,188 声望值: 3
精华: 0,解答: 24
#10 旧 2019-10-13, 16:51:57 默认
阿汪 当前离线  

谢谢楼上诸位的提示
简单比较了一下,个人还是倾向于MacOS大侠提供的线索
运用支持正则表达式的重命名工具
原来用过ReNamer,批量修改文件名非常好用
不过重命名文件夹就比较麻烦了
似乎也不支持正则表达式

尝试安装了Total Commander
并学习了一下正则表达式的语法
MacOS所写的表达式还是似懂非懂
也许是中括号太多了
尽管 it works perfectly.

试着简化了一下,写作
代码:
\s\[.*\] 或 \s\[.*\]$
竟然也能完全匹配
感觉小有成就

更新

在这里http://tool.oschina.net/regex做了一下测试
其实像下面这样写就行
代码:
\s.*
上传的图像
文件类型: png 批注 2019-10-13 174605.png (38.0 KB, 79 次查看)

此帖于 2019-10-13 18:06:27 被 阿汪 编辑. .
回复时引用此帖
midi
 
midi 的头像
超级会员
 
资 料:
注册日期: Oct 2001
帖子: 1,084 声望值: 3
精华: 5,解答: 34
#11 旧 2019-10-14, 22:10:48 默认
midi 当前离线  

不过,LZ没有说清楚,这样的文件夹深度是一层,还是多少层?可以自己写个脚本搞定
回复时引用此帖
阿汪
 
阿汪 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 4,188 声望值: 3
精华: 0,解答: 24
#12 旧 2019-10-15, 20:12:28 默认
阿汪 当前离线  

引用:
作者: midi 查看帖子
不过,LZ没有说清楚,这样的文件夹深度是一层,还是多少层?可以自己写个脚本搞定
只有一层
感觉正则比脚本更容易理解
话说自己根本是外行
回复时引用此帖
midi
 
midi 的头像
超级会员
 
资 料:
注册日期: Oct 2001
帖子: 1,084 声望值: 3
精华: 5,解答: 34
#13 旧 2019-10-16, 09:38:35 默认
midi 当前离线  

貌似用不到正则,就可以解决注意:请首先测试是否可用!!
1)下载安装python2.7到 C:\Python27
===================================
假如目标目录如下:
E:.
├─test
│ ├─VA-Hi-Fi_Times_VOL_1_Menories_Of_Comrades-CPOP-2004-COCMP3 [Hi-Fi年代1 怀念战友]
│ ├─VA-Hi-Fi_Times_VOL_2_Menories_Of_Comrades-CPOP-2004-COCMP3 [Hi-Fi年代1 怀念战友]
│ ├─VA-Hi-Fi_Times_VOL_3_Menories_Of_Comrades-CPOP-2004-COCMP3 [Hi-Fi年代1 怀念战友]
│ ├─VA-Hi-Fi_Times_VOL_4_Menories_Of_Comrades-CPOP-2006-COCMP3 [Hi-Fi年代1 怀念战友]
│ └─VA-Hi-Fi_Times_VOL_5_Menories_Of_Comrades-CPOP-2005-COCMP3 [Hi-Fi年代1 怀念战友]
===================================
2)将附件script.py脚本,保存到 test 目录下
3)输入CMD进入到此目录下。命令行中输入:
代码:
C:\Python27\python.exe  script.py
处理前:
script1.png

处理后:
script2.png
上传的附件
文件类型: zip script.zip (223 字节, 2 次查看)
回复时引用此帖
m2w
 
m2w 的头像
初级会员
 
资 料:
注册日期: Feb 2002
帖子: 151 声望值: 1
精华: 0
#14 旧 2019-10-16, 10:57:28 默认
m2w 当前离线  

批量操作这种事情,除非你非常有谱或者目标非常有规律,否则还是分步骤比较安全,否则改错了,你都不知道错在哪里。

建议先建立全盘目录清单,然后复制一份,把复制的这份内容用支持正则表达式的文本编辑器删除不想要的部分
然后把这两份文件都放到excel 中的两列作对比,无误后,加上 ren 列,然后整体复制到文本文件中,替换制表符,保存bat,一次性执行。
回复时引用此帖
发表新主题 回复

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 04:38:36.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号