Board logo

标题: [文件操作] [已解决]如何将html每一行做成单个的批处理? [打印本页]

作者: lxh623    时间: 2016-1-2 21:40     标题: [已解决]如何将html每一行做成单个的批处理?

电脑上的pdf文件都有书签,我事先用插件导出为html或者txt,样本见附件,最好是html。很多杂志,所以,有很多这样的html。
我想把的每个书签做成单个的批处理,也就是html每一行做成单个的批处理。
批处理名称是“书签--(作者)--文件名”。有时候有作者,有时候没有。

这个批处理格式如下:(我自己试着做的,有个问题,不自动退出。怎么修改?)
"D:\program files\pdf\Acrobat 11.0\Acrobat\Acrobat.exe" /A "page=43" "F:\禅\0106.pdf"

请帮我做一个建立批处理的批处理。
有了它,似乎可以更好的管理杂志。
作者: aa77dd@163.com    时间: 2016-1-2 23:23

这种方式难道要比 书签 好用吗, 会建立许多的文件

以下代码不能处理 标题 中的半角 * 号, 楼主给出的示例中倒是也没有标题 含这个符号的

Windows 文件系统中, 对文件命名来说, 非法的字符有

/\:*?"<>|
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set "AcrobatPath=D:\program files\pdf\Acrobat 11.0\Acrobat\Acrobat.exe"
  4. for %%h in (*.htm) do (
  5.     for /f "delims=" %%a in ('findstr /i /c:"<li><a href=" "%%h"') do (
  6.         set "line=%%a"
  7.         set "title=!line:~30,-9!"
  8.         set "title=!title:*>=!"
  9.         REM 去除文件名非法字符 / \ : ? " < > |
  10.         for %%a in (/ \ : ^< ^> ^|) do (
  11.             set "title=!title:%%a=_!"
  12.         )
  13.         (set title=!title:^"=_!)
  14.         (set title=!title:?=_!)
  15.         for /f tokens^=2-4^ delims^=#^". %%a in ("%%a") do (
  16.             >!title!--%%a.bat (
  17.                 echo;start "" "%AcrobatPath%" /A "%%c" "F:\禅\%%a.pdf"
  18.             )
  19.         )
  20.     )
  21. )
  22. pause
复制代码

作者: lxh623    时间: 2016-1-3 11:53

这种方式难道要比 书签 好用吗, 会建立许多的文件

以下代码不能处理 标题 中的半角 * 号, 楼主给出的示例 ...
aa77dd@163.com 发表于 2016-1-2 23:23


谢谢帮助!
我试了,对于这一本杂志,很好了。
有标题和作者,可以了。特别是杂志多了,可以辅助管理。
全文检索的办法,还是麻烦。
作者: lxh623    时间: 2016-1-3 12:10

本帖最后由 lxh623 于 2016-1-3 12:11 编辑

回复 2# aa77dd@163.com
发现一个小问题,就是,能不能从html读出pdf文件地址(代码最后)。
谢谢!
作者: lxh623    时间: 2016-1-19 21:00

我在网页浏览器看到有链接,今天,我用UltraEdit-32打开,却找不到链接。奇怪了。
插件autobookmark还可以导出xml。麻烦诸位大侠帮我看看。
就是,在同一目录下,有两个同名的文件,一个是htm,一个是xml。htm如前批处理,就可以,但是需要在xml中提取路径。
或者,所有操作只用xml。
应该能办到吧?
最好,处理完了一本杂志,就删除该期杂志的htm和xml。
谢谢!
作者: pcl_test    时间: 2016-1-19 22:03

回复 5# lxh623

打酱油
  1. @echo off
  2. mshta http://bathome.net/s/hta/ type('0106.xml')^
  3.     .match(/^<PATH^>[^^^>]+^<\/PATH^>^|^<PAGE^>[^^^>]+^<\/PAGE^>^|^<NAME^>[^^^>]+^<\/NAME^>/g)^
  4.         .EACH(function(a){return a.replace(/^<[^^^>]+^>/g,'')})^
  5.             .join('\r\n')>"结果.txt"
  6. pause
复制代码

作者: CrLf    时间: 2016-1-19 23:11

回复 6# pcl_test


可以用双引号随意囊括代码
  1. @echo off
  2. mshta http://bathome.net/s/hta/ type('0106.xml')^
  3.     ".match(/<PATH>[^>]+<\/PATH>|<PAGE>[^>]+<\/PAGE>|<NAME>[^>]+<\/NAME>/g)"^
  4.         ".EACH(function(a){return a.replace(/<[^>]+>/g,'')})"^
  5.             ".join('\r\n')" >"结果.txt"
  6. pause
复制代码
在线 hta 会忽略代码中的 ",要保留双引号的情况可用 \" 或 "" 代替,但这三者略有区别:
  1. ["测\t试"]   相当于 [测 试]
  2. [\"测\t试\"] 相当于 ["测 试"]
  3. [""测\t试""] 相当于 ["测\t试"]
复制代码

作者: lxh623    时间: 2016-1-21 12:17

麻烦最好是二楼的代码基础上,修改文件地址。
作者: lxh623    时间: 2016-2-2 12:34

当前文件夹有许多html和同名的pdf,(有些pdf没有html。)找到pdf地址,也就是本处文件夹所在,用于第二楼的代码的最后。
这个怎么能做出来?
谢谢!
作者: WHY    时间: 2016-2-2 23:31

回复 9# lxh623


    “用于二楼代码的最后”是不是把 F:\禅 改成当前路径?
这样试试
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set "AcrobatPath=D:\program files\pdf\Acrobat 11.0\Acrobat\Acrobat.exe"
  4. for /f tokens^=2-3*delims^=^"# %%a in ('findstr /i /c:"<li><a href=" *.htm') do (
  5.         set "title=%%c"
  6.         set "title=!title:~1,-9!"
  7.         set "title=!title:"=_!"
  8.         set "title=!title:?=_!"
  9.         for %%a in ( / \ : ^< ^> ^| ) do (
  10.             set "title=!title:%%a=_!"
  11.         )
  12.         echo;start "" "%AcrobatPath%" /A "%%b" "%~dp0%%a">"!title!--%%~na.bat"
  13. )
  14. pause
复制代码





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