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

[文本处理] 【已解决】批处理怎么解决相似文件名怎么才能完美分类

[复制链接]
发表于 2020-7-24 13:13:24 | 显示全部楼层 |阅读模式
本帖最后由 8532200 于 2020-7-24 22:46 编辑

找了足足两个小时。才找到这个不完美的解决方法
  1. @echo off
  2. rem 将多个文件剪切/移动到以该文件名称开头前几位字符命名的文件夹里
  3. set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
  4. title %#% +%$%%$%/%@% %z%
  5. cd /d "%~dp0"
  6. set len=4
  7. for /f "delims=" %%a in ('dir /a-d/b') do (
  8.     if /i "%%~nxa" neq "%~nx0" (
  9.         set "base=%%~na"&set "file=%%a"
  10.         setlocal enabledelayedexpansion
  11.         if not exist "!base:~0,%len%!" (md "!base:~0,%len%!")
  12.         echo;"!file!" --^> "!base:~0,%len%!"
  13.         move "!file!" "!base:~0,%len%!"
  14.         endlocal
  15.     )
  16. )
  17. :end
  18. echo;%#% +%$%%$%/%@% %z%
  19. pause
  20. exit
复制代码
不过以上代码只能截取前六位字符相同的文件名自动分类












比如我有很多txt,文件名是
朱雀记001.txt
朱雀记002.txt
朱雀记003.txt

重生之文豪野犬001.txt
重生之文豪野犬002.txt
重生之文豪野犬003.txt

犬夜叉-001.txt
犬夜叉-002.txt
犬夜叉-003.txt


CCTVVIDEO-001.TXT
CCTVVIDEO-002.TXT
CCTVVIDEO-003.TXT


文件太多了。。没有什么大的规则。。。唯一规则是很多文件名是类似的,求问怎么才可以自动分类创建目录
最后结果是

朱雀记
重生之文豪野犬
犬夜叉
CCTVVIDEO


求解决。。实在是找不到方法。。目前用的是上面的代码。。但不好用
发表于 2020-7-24 14:13:32 | 显示全部楼层
本帖最后由 smss 于 2020-7-24 16:59 编辑
  1. @Echo off&SetLocal EnableDelayedExpansion
  2. for /f "delims=" %%i in ('dir /b/s *.txt ^|find /V "-"')do set "n=%%~nxi"&ren "%%i" "!n:~0,-7!-!n:~-7!"
  3. for /f "tokens=1,2 delims=-" %%i in ('dir /b/s *-*.txt')do (if not exist "%%~ni" md "%%~ni"
  4. move "%%i-%%j" "%%~ni")
  5. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
8532200 + 1 感谢帮忙

查看全部评分

发表于 2020-7-24 14:27:34 | 显示全部楼层
用正则匹配
  1. ^([^\x00-\xff]|[A-Z])+(?=-)?
复制代码
 楼主| 发表于 2020-7-24 14:54:02 | 显示全部楼层
用正则匹配
ivor 发表于 2020-7-24 14:27



    感谢回复。。。但你这个毫无反应
 楼主| 发表于 2020-7-24 14:57:41 | 显示全部楼层
smss 发表于 2020-7-24 14:13



    非常感谢回复。。实测毫无用处。。。只创建了同名文件夹(例如朱雀记001)。。甚至没有把txt放进去

理论结果应该是把含有朱雀记文件名的文件放进朱雀记文件夹里
 楼主| 发表于 2020-7-24 15:10:07 | 显示全部楼层
用正则匹配
ivor 发表于 2020-7-24 14:27


  实际测试了一下。。。。这段代码需要改为^([^\x00-\xff]|[A-Z])+
才可以对txt正则。。。但我这个不是修改txt里面的文字。。。而是需要分类文件
发表于 2020-7-24 17:02:00 | 显示全部楼层
回复 5# 8532200
另存为ANSI编码再试试
 楼主| 发表于 2020-7-24 18:33:42 | 显示全部楼层
回复  8532200
另存为ANSI编码再试试
smss 发表于 2020-7-24 17:02



    我默认就是ansi。实测确实毫无用处。。。只创建了一些空白文件夹
发表于 2020-7-24 20:21:13 | 显示全部楼层
本帖最后由 smss 于 2020-7-24 20:23 编辑

回复 8# 8532200 已修改再试试
 楼主| 发表于 2020-7-24 20:28:01 | 显示全部楼层
回复  8532200 已修改再试试
smss 发表于 2020-7-24 20:21



    实测还是和之前的一样。。只创建了空白文件夹。。。。
 楼主| 发表于 2020-7-24 20:31:23 | 显示全部楼层
回复  8532200 已修改再试试
smss 发表于 2020-7-24 20:21



    我知道为何出错了。。。我测试了朱雀记001,002成功了。。。但是小说有很多文件名。。。看起来没办法做到完美分类了。。。只要稍微不同就不行
 楼主| 发表于 2020-7-24 20:33:24 | 显示全部楼层
回复  8532200 已修改再试试
smss 发表于 2020-7-24 20:21



    简单说。目前你这个代码没办法做到我说的相近字符就分类。需要一些条件。。看起来还是需要手动调节。。。或者可以配合我找到的那个代码来使用了。。。
发表于 2020-7-24 22:29:25 | 显示全部楼层
如果文件名仅限于你列出的那样,试试下面的代码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r %%i in ("*.txt")do (
  4.   set "Name=%%~nxi"
  5.   if "!Name:~-8,1!" == "-" (
  6.     if not exist "!Name:~0,-8!" md "!Name:~0,-8!"
  7.     move /-y "%%i" "!Name:~0,-8!"
  8.   ) else (
  9.     if not exist "!Name:~0,-7!" md "!Name:~0,-7!"
  10.     move /-y "%%i" "!Name:~0,-7!"
  11.   )
  12. )
  13. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
8532200 + 1 感谢!!!!

查看全部评分

 楼主| 发表于 2020-7-24 22:37:05 | 显示全部楼层
如果文件名仅限于你列出的那样,试试下面的代码:
qixiaobin0715 发表于 2020-7-24 22:29



    不是。。。。文件名会有些许变动。楼上其实已经解决我说的问题。。。只是没办法完美
发表于 2020-7-24 22:39:23 | 显示全部楼层
回复 1# 8532200


试试 BAT + sed 的方法:
http://bcn.bathome.net/s/tool/index.html?key=sed
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  3.     for /f "delims=" %%j in ('echo %%i^|sed -r "s/^([^\x00-\xff]+).*/\1/; s/^([A-Z]+).*/\1/"') do (
  4.         if not exist "%%j" (
  5.             md "%%j"
  6.         )
  7.         move /y "%%i" "%%j"
  8.     )
  9. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 04:13 , Processed in 0.023889 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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