Board logo

标题: [文件操作] 如何提取txt里的指定内容来重命名jpg图片? [打印本页]

作者: wenlishasha    时间: 2016-1-30 18:20     标题: 如何提取txt里的指定内容来重命名jpg图片?

我有一堆jpg和txt(各有2万多个)
这是其中一个txt的内容


<p>
                        <strong>Debregeasia orientalis</strong> C. J. Chen in Novon 1:56. 1991.</p><p><em>Debregeasia edulis</em> auct. non(Sieb. et Zucc.)Wedd. :中国高等植物图鉴1:523. 1972.</p><p></p><p>灌木,高达4米。小枝被贴生白色柔毛,后无毛。叶纸质或薄纸质,长圆状披针形或线状披针形,长5-18(-25)厘米,先端渐尖或短渐尖,基部圆或宽楔形,有不等细锯齿或细牙齿,上面常泡状隆起,疏生糙毛,钟乳体点状,下面被白或灰绿色毡毛,脉上疏生柔毛,基出脉3,侧脉3-5对;叶柄长0.3-1厘米,被贴生柔毛,托叶披针形,长6-8毫米,顶端2浅裂。花雌雄异株,稀同株,生于去年生枝和老枝叶腋,二回二歧分枝或二叉分枝,具短梗或无梗,长1-1.5厘米,分枝顶端生球状团伞花簇。雄花花被片4,下部合生,裂片三角状卵形,疏生微柔</p><p>产西藏东部、云南、广西、贵州、四川、甘肃南部、陕西南部、湖北、湖南及台湾,生于海拔300-2800米溪谷河流两岸潮湿地区。日本有分布。为纤维植物;果可食;叶可作饲料。</p><p></p><p></p><p><p align="center"><img align="absmiddle" src="/CRFDPIC/R201309699/R201309699.XT04-0226.jpg"/></p></p><p><p align="center">水麻 (王金凤绘)</p></p><p><p align="center"><img align="absmiddle" src="/CRFDPIC/R201309699/R201309699.ZP04-064.jpg"/></p></p><p><p align="center">水麻 Debregeasia orientalis (郎楷永)</p></p><p><p align="center"><img align="absmiddle" src="/CRFDPIC/R201309699/R201309699.4-36-21-4.jpg"/></p>
                    </p>


里面有一个jpg文件的名字(红色部分),我想提取txt中的蓝色的名字,替换为图片文件名字,哪位老师能不能帮我弄弄?
作者: hlzj88    时间: 2016-1-30 19:19

本帖最后由 hlzj88 于 2016-1-30 19:20 编辑

最好把网页链接放上来
作者: wenlishasha    时间: 2016-1-30 23:15

回复 2# hlzj88


    没有网页链接,文件是他们给的
作者: hlzj88    时间: 2016-1-30 23:54

这样你从文本挑前面,中间,后面,都上传两个,
作者: hlzj88    时间: 2016-1-31 01:08

你后面上传的txt里除了最后的  R2013097080001870.txt和  R2013097080001872.txt里有jpg图片,其余全没有。
且 内容上 可供改名的是   1-2. 巾唇兰 3-8. 槌柱兰 (冀朝祯绘),而没有   如顶楼的  水麻 Debregeasia orientalis (郎楷永)  这样的第二行汉字,那么你确认是要1  所有图片都改名  2  没有第二行汉字就用第一行汉字吗
作者: hlzj88    时间: 2016-1-31 02:19

因为你的文本是utf-8格式的,因此需要先进行转码,因为转码的bat只可以使用一次,因此,把这个bat单独出来
  1. @echo off
  2. echo 这是编码转换bat,对于utf8格式文本转换为ansi格式,但只敢使用一次,不可重复使用
  3. pause
  4. for %%a in (*.txt) do (
  5.     title 编码转换 文件是 %%a
  6.     iconv -c -f utf-8 -t gb2312 "%%a" >"gb%%a"
  7.     move /y "gb%%a" "%%a">nul
  8.     )
复制代码
转码完成后可以使用下面的bat,经测试可以完成图片重命名, 但建议对原文件要进行备份,切记。
  1. @echo off&setlocal enabledelayedexpansion
  2. del test.*
  3. for /f %%i in ('dir /b "*.jpg"') do (
  4.     echo ^<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"^>^<html
  5. xmlns="http://www.w3.org/1999/xhtml"^<head^>^<meta http-equiv="Comtent-type" content="text/html; charset=gb2312"^>>test.html
  6.    for /f %%b in ('dir /b *.txt') do (
  7.     type "%%b"|findstr /ic:"%%i"&&type "%%b"|findstr /ic:"strong">>test.html
  8. )
  9.     echo ^</html^>>>test.html
  10.     htox32c /IP /O0 test.html>nul 2>nul
  11. for /f "delims=" %%c in (test.txt) do (
  12.     set "foo=%%c"
  13.     set foo=!foo: =!
  14.     set foo=!foo:  =!
  15.     echo !foo!>>ws.ini
  16.   )
  17. move /y ws.ini test.txt>nul 2>nul
  18. for /f "delims=" %%d in ('type "test.txt"') do set "str1=%%d"
  19. ren "%%i" "!str1!.jpg"
  20. del test.txt
  21. )
  22. del test.html
  23. pause
复制代码

作者: hlzj88    时间: 2016-1-31 02:29

本帖最后由 hlzj88 于 2016-1-31 09:53 编辑

涉及到的两个第三方程序, htox32c和 iconv本坛有,你搜索

另 你所有的上传的txt,只有三个里面有jpg, 而且有两个的图片是一样的,因此测试一定要备份。
作者: wenlishasha    时间: 2016-1-31 10:03

回复 7# hlzj88


    好的,非常感谢!!
作者: 依山居    时间: 2016-1-31 10:29

回复 8# hlzj88


    往坏的猜是完全不舍得用心。
作者: wenlishasha    时间: 2016-1-31 10:31

本帖最后由 wenlishasha 于 2016-1-31 10:35 编辑

回复 8# hlzj88


    iconv 不知道如何使用?请老师赐教!我放在bat目录和放在system32目录下都试过,一运行转码txt都变为0字节了
作者: hlzj88    时间: 2016-1-31 10:49

你说的两个位置都是可以的,只能说你的txt可能部分是ansi格式的,但你上传的又都是Utf-8的,所以我才单独用了这个,要不,编码转换的你先不用,试试改名的,看结果咋样,还是要注意备份。
作者: wenlishasha    时间: 2016-1-31 11:11

回复 12# hlzj88


    嗯嗯




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