Board logo

标题: [文件操作] [已解决]批处理如何删除文件名中两个指定字符及其之间的内容? [打印本页]

作者: 130031300    时间: 2015-4-20 17:26     标题: [已解决]批处理如何删除文件名中两个指定字符及其之间的内容?

本帖最后由 pcl_test 于 2016-12-5 13:30 编辑

下载了上千部电影之前都没有改过名,整理硬盘时候发现被太多网站冠名了,手动改很麻烦,用软件改也不能一键完成。
搜索和改写了很多批处理与vbs都不能用,实在不会了来求助大神。


1、文件夹内的文件如下:
【域名被盗,新域名www.new.com】速度与激情6.rmvb
美国狙击手HD中字1280高清[http://dianying6.org].mkv
未来战警BD国语配音中字1024高清{8D电影www.8D.net}.avi
(影www.yd.video.com视)马达加斯加:狐猴之岛.BD中英双字1280高清.mp4
(www.media8video.com)移动迷宫.720p.国英双语.BD中英双字.mov



2、批处理后想要得到的结果如下:
速度与激情6.rmvb
美国狙击手HD中字1280高清.mkv
未来战警BD国语配音中字1024高清.avi
马达加斯加:狐猴之岛.BD中英双字1280高清.mp4
移动迷宫.720p.国英双语.BD中英双字.mov



批量改名要删除括号内包含括号的所有字符,并保留扩展名。
但这些文件的括号都不统一,有些是【】组合,还有些是{}组合,还有些()全角,还有()半角,更离谱的是还有这些排列组合的,例如(和],{和)……
最好能设置开头和结尾,与之间的内容一并删除,批量重命名。
不是要对txt文档内容的修改,是windows里某文件夹下的所有文件名
弄好几天了都不行,求大神给写个批处理或VBS的代码吧!
作者: pcl_test    时间: 2015-4-20 17:53

把所有可能出现的不同网站符号组合的文件名都列一个出来
作者: 130031300    时间: 2015-4-20 18:03

把所有可能出现的不同网站符号组合的文件名都列一个出来
pcl_test 发表于 2015-4-20 17:53



    常用的括号符号就是以上那4种 先不管他混乱组合 碰到这样的手动一下吧
最常用就是【】和[]了!里面的内容不确定,有的直接写域名,有的写文字+域名。我这随便一眼能看到的就好多种:

[电影天堂www.dy2018.com]心花路放DVD中英双字
【6v电影www.dy131.com】杀戮元凶:狙击手BD中英双字1024高清
【最新电影www.66e.cc】达·芬奇密码(导演剪辑版).720p.国英双语.BD中英双字
[www.dy131.com转载]记忆碎片BD中英双字1280高清
【6v电影域名被盗,新地址www.6vhao.com】终极神鹰BD国英音轨中英双字1024高请
[阳光电影www.ygdy8.com].德古拉元年.BD.720p.中英双字幕
机器人帝国.HD中字1280高清【6v电影www.6vhao.net】
【迅雷下载www.dy131.com】平行宇宙2011
【66影视www.66ys.org】铁甲衣BD中英双字1280高清
……
……
……
作者: 130031300    时间: 2015-4-20 18:11

小弟爬楼试改了好多都不行,水平实在有限让大神们见笑了。试过一个改txt里面内容的很好用,不知能不能移植成改文件名的。

如下:


@set @n=0;/* & echo off

dir /b *.txt|cscript -nologo -e:jscript "%~0" ""
exit/b & rem */
arg = WScript.Arguments(0);
fso = new ActiveXObject("Scripting.FileSystemObject");
while (!WSH.StdIn.AtEndOfStream) {
    f = WSH.StdIn.ReadLine();
    txt = fso.OpenTextFile(f,1).ReadAll();
        {
            txt = txt.replace(/【[\s\S]*?】/ig,"");
        };
    fso.OpenTextFile(f,2).Write(txt);
}
作者: 130031300    时间: 2015-4-20 18:14

还爬到过手动往里填的,碰到这样的域名就填写一次在里面,也不是太方便。“敌人”层出不穷,有没有一键杀之的方法……


手动填:
@Echo Off&SetLocal ENABLEDELAYEDEXPANSION
set name=【6v电影www.dy131.com】
FOR %%a in (*) do (
        set "name=%%a"
        set "name=!name:%name%=!"
        ren "%%a" "!name!"
)


作者: cobat    时间: 2015-4-20 18:17

  1. @echo off
  2. for /f "delims=" %%a in ('dir/b') do (
  3.     set $=%%a
  4.     setlocal enabledelayedexpansion
  5.     for %%b in (^) ] } ) 】) do (
  6.         if "!$:*%%b=!" NEQ "%%~xa" (
  7.             if "!$:*%%b=!" NEQ "!$!" ren "!$!" "!$:*%%b=!"
  8.         ) else (
  9.             for /f "delims=([{(【" %%c in ("!$!") do (
  10.                 ren "!$!" "%%c%%~xa"
  11.             )
  12.         )
  13.     )
  14.     endlocal
  15. )
  16. pause
复制代码

作者: 130031300    时间: 2015-4-20 18:24

感谢6楼!非常好用!有多重括号的多执行几次就全“杀”了!碰到重名有提示,真好!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2