标题: [文件操作] [已解决]如何将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 文件系统中, 对文件命名来说, 非法的字符有
/\:*?"<>|- @echo off
- setlocal enableDelayedExpansion
-
- set "AcrobatPath=D:\program files\pdf\Acrobat 11.0\Acrobat\Acrobat.exe"
-
- for %%h in (*.htm) do (
-
- for /f "delims=" %%a in ('findstr /i /c:"<li><a href=" "%%h"') do (
- set "line=%%a"
- set "title=!line:~30,-9!"
- set "title=!title:*>=!"
-
- REM 去除文件名非法字符 / \ : ? " < > |
- for %%a in (/ \ : ^< ^> ^|) do (
- set "title=!title:%%a=_!"
- )
- (set title=!title:^"=_!)
- (set title=!title:?=_!)
-
- for /f tokens^=2-4^ delims^=#^". %%a in ("%%a") do (
- >!title!--%%a.bat (
- echo;start "" "%AcrobatPath%" /A "%%c" "F:\禅\%%a.pdf"
- )
- )
- )
-
- )
- 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
打酱油- @echo off
- mshta http://bathome.net/s/hta/ type('0106.xml')^
- .match(/^<PATH^>[^^^>]+^<\/PATH^>^|^<PAGE^>[^^^>]+^<\/PAGE^>^|^<NAME^>[^^^>]+^<\/NAME^>/g)^
- .EACH(function(a){return a.replace(/^<[^^^>]+^>/g,'')})^
- .join('\r\n')>"结果.txt"
- pause
复制代码
作者: CrLf 时间: 2016-1-19 23:11
回复 6# pcl_test
可以用双引号随意囊括代码- @echo off
- mshta http://bathome.net/s/hta/ type('0106.xml')^
- ".match(/<PATH>[^>]+<\/PATH>|<PAGE>[^>]+<\/PAGE>|<NAME>[^>]+<\/NAME>/g)"^
- ".EACH(function(a){return a.replace(/<[^>]+>/g,'')})"^
- ".join('\r\n')" >"结果.txt"
- pause
复制代码
在线 hta 会忽略代码中的 ",要保留双引号的情况可用 \" 或 "" 代替,但这三者略有区别:- ["测\t试"] 相当于 [测 试]
- [\"测\t试\"] 相当于 ["测 试"]
- [""测\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:\禅 改成当前路径?
这样试试- @echo off
- setlocal enableDelayedExpansion
- set "AcrobatPath=D:\program files\pdf\Acrobat 11.0\Acrobat\Acrobat.exe"
-
- for /f tokens^=2-3*delims^=^"# %%a in ('findstr /i /c:"<li><a href=" *.htm') do (
- set "title=%%c"
- set "title=!title:~1,-9!"
- set "title=!title:"=_!"
- set "title=!title:?=_!"
- for %%a in ( / \ : ^< ^> ^| ) do (
- set "title=!title:%%a=_!"
- )
- echo;start "" "%AcrobatPath%" /A "%%b" "%~dp0%%a">"!title!--%%~na.bat"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |