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

[文本处理] 【已解决】批处理提取文件内容进行重命名操作

[复制链接]
发表于 2018-1-11 11:37:57 | 显示全部楼层 |阅读模式
本帖最后由 屡败屡战 于 2018-1-16 11:27 编辑

说明一下:如何提取文本中的指定字符串/行内容来更改/替换/重命名原文件名

求助:在某个文件夹下有成百上千个文件,但是txt文件的原标题却是在尾部,其标题行包含关键字“原标题”。

我求助能够批量提取包含关键字“原标题”的“行”并且对文件进行改名。
  1. 现在原文如下:

  2. 云南西双版纳傣族自治州中老边境上,居住着一群不用护照但可随意进出两国的特殊“边民”,它们就是有着“明星物种”之称的亚洲象。

  3.     原标题中国老挝推动生物多样性跨境联合保护,野象爱上西双版纳--云南频道--人民网
复制代码
我想提取包含关键字“原标题”的“行”并且对文件进行改名。
另外,重申下是针对成百上千个文件进行重命名,而不是单文件重命名。
望老师启发下!!
发表于 2018-1-11 17:02:30 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-1-11 17:22 编辑
  1. @echo off
  2. set "ScDir=D:\temp"
  3. set "spt=原标题"
  4. cd /d "%ScDir%"&cd.>"%ScDir%\error.log"
  5. for /f  "delims=" %%a in ('dir /a-d /s /b *.txt') do (
  6.         for /f  "delims=" %%i in ('findstr /n .* "%%a"') do set "var=%%i"
  7.         setlocal enableDelayedExpansion
  8.         set "tmp=!var!"
  9.         set "var=!var:*%spt%=!"
  10.         if !var! neq !tmp! (ren "%%a" "!var!%%~xa") else (echo %%~a>>"%ScDir%\error.log")
  11.         endlocal
  12. )
  13. pause   
  14. exit
复制代码

评分

参与人数 1技术 +1 收起 理由
屡败屡战 + 1 代码完美,谢谢老师

查看全部评分

 楼主| 发表于 2018-1-11 20:00:58 | 显示全部楼层
本帖最后由 屡败屡战 于 2018-1-11 20:26 编辑

老师,论坛有个求助帖,我一直看不懂,望帮我解释下: 原网址:http://www.bathome.net/thread-12292-1-1.html

对文件名中带有指定字符串的文件放入  该字符串建立的文件夹中

大体都可以实现了,但是现在  有个问题 就是 有个问题

比如  文件名  有 a试验b.txt    a实验b.txt   这两个文件   我给个  关键字 为 “实验 试验”  我想 直接 通过findstr 两个都匹配

但是现在是无法匹配


代码如下:
  1. @echo off
  2. cls
  3. set pa=%cd%
  4. set pa=%pa:"=%
  5. rem keywords.txt 记录分类关键字 每一行为一个关键字,存在或关系的关键放在一行 并用空格分隔
  6. if not EXIST keywords.txt ( echo 未找到关键字文件!按任意键退出!&pause>nul&goto end )
  7. rem 循环建立目录,分类归档
  8. for /f "tokens=*" %%i in (keywords.txt) do (
  9. rem 建立目录
  10. if not EXIST "%pa%\%%i" md "%pa%\%%i"
  11. rem 循环分类归档
  12. for /f "delims=" %%a in ('dir /a-d /b "%pa%"^|findstr /c:"%%i"') do (
  13. rem echo "%%a"
  14. move /-y "%%a"  "%%i" 2>nul
  15. )
  16. )
  17. goto end
  18. :end
  19. rem pause
  20. exit
复制代码
我弄了个测试目录  目录 里面 有如下文件
keywords.txt
实验新建文本试验 (4).txt
文件归档管理.bat
新建关键测文 (2).txt
新建关键测试文档 (2) - 副本.txt
新建关键试文档 (3) - 副本.txt
新建实验试验 (3).txt
新建文件夹
新建文本文档.txt

keywords.txt  里面给出的关键字为
  1. 关键
  2. 实验 试验
复制代码
运行的结果是  建立了  “关键”   和  “实验 试验”  三个带有  “关键”的文件已经归入文件夹内,但是 带有 “实验” 或者 “试验” 的文件 没有被移动,
新建的“实验 试验”的文件夹是空的。


但是,现在有个问题,我改成findstr /r 后,代码还是无法执行,不知咋回事??望解答下。
 楼主| 发表于 2018-1-14 15:21:06 | 显示全部楼层
自己顶一下,看看有高手帮忙解决一下不。
 楼主| 发表于 2018-1-24 21:03:39 | 显示全部楼层
自己顶一下,看看有高手帮忙解答一下不。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 03:20 , Processed in 0.019971 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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