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

[文本处理] [已解决]如何提取html特定链接代码,用title名称重命名以链接文件名存储的文件?

[复制链接]
发表于 2020-11-14 20:29:08 | 显示全部楼层 |阅读模式
现状:
1、文件结构:某文件夹中有2个子文件夹,一个是html文件夹,该文件夹中有N个html文件;另一个是jpg文件夹,该文件夹有N个子文件夹,形如dir1,dir2...dirN,每个dir里有不定数量的jpg文件(文件名以字母或数字命名)
2、html代码:每个html包含特定的2行代码,形如<title>样例</title><src="../jpg/DirN/sample.jpg">
3、html文件与jpg文件的关系。html中<src="../jpg/DirN/sample.jpg">的sample.jpg已存储在jpg/DirN文件夹中。


需求:
查找所有html文件,提取每个html中的<title>样例</title><src="../jpg/DirN/sample.jpg">,sample.jpg命名对应保存在jpg/DirN文件夹中的sample.jpg文件重命名为样例.jpg
发表于 2020-11-15 12:03:18 | 显示全部楼层
  1. #&cls&@powershell "Get-Content '%~0' | Out-String | Invoke-Expression" & pause&exit

  2. dir -Recurse *.html | %{
  3. $title = [Regex]::Match((gc $_),"(?<=<title>).*(?=</title>)")
  4. $img = [Regex]::Match((gc $_),"(?<=src="").*(?="")")
  5. $title = $title.Value
  6. $img = $img.Value.Substring(1)
  7. $ext = "."+$img.Split(".")[2]
  8. Rename-Item -Path $img -NewName $title$ext  -Verbose
  9. }
复制代码
 楼主| 发表于 2020-11-15 13:26:15 | 显示全部楼层
回复 2# ivor

感谢ivor!代码运行时,出现错误,如图:

麻烦再看下是哪里出了问题。
发表于 2020-11-15 13:56:25 | 显示全部楼层
本帖最后由 ivor 于 2020-11-15 13:58 编辑

脚本命名为1.bat,保存位置:html文件夹、jpg、1.bat
  1. │  1.bat

  2. ├─html
  3. │      1.html
  4. │      N.html
  5. │      此目录下有N个不规则以英文或数字命名的Html文件

  6. └─jpg
  7.     │  此文件夹下有N个不规则以英文或数字命名的子文件夹
  8.     │
  9.     ├─Dir1
  10.     │      test.jpg
  11.     │
  12.     └─DirN
  13.             sample.jpg
复制代码
 楼主| 发表于 2020-11-15 14:11:29 | 显示全部楼层
回复 4# ivor

照您的方法试了,执行后显示“请按任意键继续. . .”,查看JPG文件夹中的文件名,没有变化,还是原文件名。
 楼主| 发表于 2020-11-15 16:51:17 | 显示全部楼层
感谢ivor大神提供的代码,问题已解决。

谢谢各位关注及参与。分享代码:

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0'))" &pause&exit

dir -Recurse -Filter *.html | %{
$title = [Regex]::Match((gc $_.FullName),"(?<=<title>).*(?=</title>)")
$img = [Regex]::Match((gc $_.FullName),"(?<=src="").*(?=\"")")
$title = $title.Value
$img = $img.Value.Substring(1)
$ext = "."+$img.Split(".")[2]
Rename-Item -Path $img -NewName $title$ext  -Verbose
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 21:47 , Processed in 0.031965 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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