[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

现状:
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

  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. }
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 2# ivor

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

麻烦再看下是哪里出了问题。

TOP

本帖最后由 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
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 4# ivor

照您的方法试了,执行后显示“请按任意键继续. . .”,查看JPG文件夹中的文件名,没有变化,还是原文件名。

TOP

感谢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
}

TOP

返回列表