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

[文件操作] [已解决]如何将html每一行做成单个的批处理?

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

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

请帮我做一个建立批处理的批处理。
有了它,似乎可以更好的管理杂志。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

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

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
复制代码
1

评分人数

TOP

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

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


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

TOP

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

回复 2# aa77dd@163.com
发现一个小问题,就是,能不能从html读出pdf文件地址(代码最后)。
谢谢!

TOP

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

TOP

回复 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
复制代码

TOP

回复 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试"]
复制代码

TOP

麻烦最好是二楼的代码基础上,修改文件地址。

TOP

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

TOP

回复 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
复制代码
1

评分人数

    • lxh623: 谢了!祝阖家幸福,新春吉祥!技术 + 1

TOP

返回列表