Board logo

标题: [文本处理] [已解决]批处理如何实现将文件名含有两个作者的txt文件单独提取出来 [打印本页]

作者: iIoveyou    时间: 2022-1-22 18:50     标题: [已解决]批处理如何实现将文件名含有两个作者的txt文件单独提取出来

本帖最后由 iIoveyou 于 2022-1-23 21:02 编辑

如何实现将文件名含有两个作者的txt文件单独提取出来
作者和作者中间还有其他文字
作者: Batcher    时间: 2022-1-22 20:26

回复 1# iIoveyou


    请给出几个真实的文件名以便测试代码
作者: iIoveyou    时间: 2022-1-22 20:38

回复 2# Batcher


   
例如:
《鉴证寻踪》作者:谙桥》作者:谙桥
《谋杀禁忌》作者:黑眼圈》作者:黑眼圈
《浮生物语》作者:裟椤双树》作者:裟椤双树

大概是这样
由于操作失误导致一些文件的作者名字出现了两次 混在了8w多文件里
作者: qixiaobin0715    时间: 2022-1-22 21:22

本帖最后由 qixiaobin0715 于 2022-1-22 21:28 编辑

回复 3# iIoveyou
可以试试直接修改文件名。
下面代码运行后如果显示正确,去掉第4行的echo再运行代码,直接修改文件名即可:
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /a-d *作者:*作者:*.txt') do (
  3.     for /f "tokens=1,3 delims=:" %%i in ("%%a") do (
  4.         echo ren "%%a" "%%i:%%j"
  5.     )
  6. )
  7. pause
复制代码

作者: iIoveyou    时间: 2022-1-23 13:31

回复  iIoveyou
可以试试直接修改文件名。
下面代码运行后如果显示正确,去掉第4行的echo再运行代码,直 ...
qixiaobin0715 发表于 2022-1-22 21:22



但是电脑改完还要重新把文件上传网盘再下载到手机里 太麻烦了
出问题的文件不多 我只想在电脑里找出来 然后在手机里挨个改一下
作者: qixiaobin0715    时间: 2022-1-23 18:02

回复 5# iIoveyou
  1. @echo off
  2. dir /b /a-d *作者*作者*.txt
  3. pause
复制代码

作者: xp3000    时间: 2022-1-23 18:30

  1. //&cls&dir /a-d/b /s *.txt|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var fso = new ActiveXObject('Scripting.FileSystemObject');
  3. while(!WSH.StdIn.AtEndOfStream){
  4.     var line = WSH.StdIn.ReadLine();
  5.     var file = fso.GetFile(line);
  6.     var name = fso.GetBaseName(line).replace(/(《[^》]+》)作者:([^》]+)》作者:\2/g, '$1作者:$2');
  7.     var ext = '.'+fso.GetExtensionName(line);
  8.     if(name&&!fso.FileExists(file.ParentFolder+'\\'+name+ext))file.Name=name+ext;
  9. }
复制代码
论坛有类似改名规则,修改了下,保存ANSI编码的BAT运行即可




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