Board logo

标题: [文件操作] [已解决]批处理对含有特定中文关键词的文件添加前缀 [打印本页]

作者: zytedwards    时间: 2012-11-10 22:12     标题: [已解决]批处理对含有特定中文关键词的文件添加前缀

本帖最后由 zytedwards 于 2012-11-12 13:36 编辑

我想要对搜索出来的文件按关键词添加前缀,如
周杰伦 - 神曲.mp3  →  含有“周杰伦”三个字  →  a周杰伦 - 神曲.mp3
关于周杰伦的电影.rmvb  →  含有“周杰伦”三个字  →  a关于周杰伦的电影.rmvb

谢霆锋 - 神曲.mp3  →  含有“谢霆锋”三个字  →  b周杰伦 - 神曲.mp3
关于谢霆锋的电影.rmvb  →  含有“谢霆锋”三个字  →  b关于谢霆锋的电影.rmvb

就是如果有某个关键词,文件名就加个前缀。。我REN了半天搞不定,故求助各位..
作者: zytedwards    时间: 2012-11-11 11:40

是我的问题太无聊了吗。。
作者: apang    时间: 2012-11-11 15:00

试试
  1. @echo off
  2. set today=%date:~0,4%-%date:~5,2%-%date:~8,2%
  3. md "C:\%today%" 2>nul
  4. set "_周杰伦=a"
  5. set "_谢霆锋=b"
  6. set "_林依伦=c"
  7. for /f "delims=" %%a in (a.txt) do (
  8.   set "Pth=%%~fa"
  9.   set "Name=%%~nxa"
  10.   setlocal enabledelayedexpansion
  11.   if exist "!Pth!" (
  12.     for %%b in (周杰伦 谢霆锋 林依伦) do (
  13.       if "!Name:%%b=!" neq "!Name!" (
  14.         for %%c in (!_%%b!) do copy "!Pth!" "C:\%today%\%%c!Name!"
  15.         set F=1
  16.       )
  17.     )
  18.     if not defined F copy "!Pth!" "C:\%today%\!Name!"
  19.   ) else echo,!Name!>>b.txt
  20.   endlocal
  21. )
  22. pause
复制代码

作者: zytedwards    时间: 2012-11-11 23:40

可能我说的不太对。。
其实就是对于“周杰伦 - 神曲.mp3”这种,发现有“杰伦”这两个字,就对这个文件添加前缀a,改成"a周杰伦 - 神曲.mp3";
如果是“往期资料.doc”,发现有"资料"两个字,就把这个文件改成"b往期资料.doc"
作者: zytedwards    时间: 2012-11-11 23:56

  1. @echo off
  2. set k=杰伦
  3. set m=资料
  4. set path=E:\
  5. for /f "delims=" %%i in ('dir /s/a-d/b %path%*%k%*') do (
  6. ren "%%i" "a_%%i")
  7. for /f "delims=" %%b in ('dir /s/a-d/b %path%*%m%*') do (
  8. ren "%%b" "b_%%b")
  9. pause
复制代码
我自己在网上找了改改,发现说命令不正确。。郁闷中 求指导
作者: apang    时间: 2012-11-12 00:51

回复 4# zytedwards


    被你说糊涂了呢。。。到底是搜索磁盘文件并改名,还是根据列表复制并改名?
刚测试了可以根据列表复制文件并根据关键字改名的,可能你的列表文件格式不一样?我测试a.txt像这样:
D:\金曲\依然爱你-王力宏.mp3
D:\金曲\等爱的玫瑰-凤凰传奇.mp3
关键字:力宏、凤凰
作者: zytedwards    时间: 2012-11-12 08:01

回复 6# apang


    呃。。。其实我一开始那个代码是把文件复制出来的,复制完之后就要对那些文件进行重命名
    所以实际上就是对于某一个文件夹像是E:\a搜索文件进行重命名 不好意思没讲清楚。。
作者: apang    时间: 2012-11-12 11:02

回复 7# zytedwards


    晕死~~
顶楼的意思不就是要求在原代码上增加重命名的功能吗?否则,你在顶楼贴出代码有何意义?
如果仅仅是重命名,就不要贴出那代码,把人往沟里引。。。
作者: zytedwards    时间: 2012-11-12 11:19

回复 8# apang


    我错了大神。。我把那段东西删掉吧
作者: apang    时间: 2012-11-12 12:13

回复 9# zytedwards


    5楼代码:
第7行:ren "%%i" "a_%%~nxi")
第10行:ren "%%b" "b_%%~nxb")
作者: zytedwards    时间: 2012-11-12 13:36

回复 10# apang


    已经解决了,谢谢!




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