我已经使用HTTRACK从政府网站下载联邦法规,并且不会直观地命名生成的HTML文件。每个文件都有一个<TITLE></TITLE>
标记集,可以很好地为每个文件命名,使其能够创建电子书。我想将这些规定变成我的Kindle电子书,这样我就可以随时提供相关规定,而不是随处携带大量书籍。
我首选的文本/十六进制编辑器UltraEdit Professional 15.20.0.1026,通过嵌入JavaScript引擎启用脚本命令。在研究我的问题的可能解决方案时,我在IDM UltraEdit网站上找到了xmlTitleSave。
// ----------------------------------------------------------------------------
// Script Name: xmlTitleSave.js
// Creation Date: 2008-06-09
// Last Modified:
// Copyright: none
// Purpose: find the <title> value in an XML document, then saves the file as the
// title.xml in a user-specified directory
// ----------------------------------------------------------------------------
//Some variables we need
var regex = "<title>(.*)</title>" //Perl regular expression to find title string
var file_path = UltraEdit.getString("Path to save file at? !! MUST PRE EXIST !!",1);
// Start at the beginning of the file
UltraEdit.activeDocument.top();
UltraEdit.activeDocument.unicodeToASCII();
// Turn on regular expressions
UltraEdit.activeDocument.findReplace.regExp = true;
// Find it
UltraEdit.activeDocument.findReplace.find(regex);
// Load it into a selection
var titl = UltraEdit.activeDocument.selection;
// Javascript function 'match' will match the regex within the javascript engine
// so we can extract the actual title via array
t = titl.match(regex);
// 't' is an array of the match from 'titl' based on the var 'regex'
// the 2nd value of the array gives us what we need... then append '.xml'
saveTitle = t[1]+".xml";
UltraEdit.saveAs(file_path + saveTitle);
// Uncomment for debugging
// UltraEdit.outputWindow.write("titl = " + titl);
// UltraEdit.outputWindow.write("t = " + t);
我的问题是双重的:
<TITLE></TITLE>
内容并重命名文件?编辑:
通过删除UltraEdit.activeDocument.unicodeToASCII();
行并将文件扩展名更改为.html
,我可以根据需要让脚本正常工作。我现在唯一的问题是,虽然这个脚本适用于单个打开文件,但它不会批处理目录。
答案 0 :(得分:2)
您可以使用几乎任何“可编写脚本”的语言来快速完成这样的操作。 Ruby是我最喜欢的:
require 'fileutils'
dir = "/your/directory"
files = Dir["#{dir}/*.html"]
files.each do |file|
html = IO.read file
title = $1 if html.match /<title>([^<]+)<\/title>/i
FileUtils.mv file "#{dir}/#{title}.html"
puts "Renamed #{file} to #{title}.html."
end
显然,如果您的UltraEdit脚本对您有用,这可能会很钝,但对于任何运行不同env的人来说,希望这很有用。
答案 1 :(得分:1)
XML和HTML都是纯文本,并且该脚本只是在文本上运行正则表达式来提取标题标签,两者都是相同的;你唯一需要做的就是改变这一行:
saveTitle = t[1]+".xml";
到此:
saveTitle = t[1]+".html";
答案 2 :(得分:1)
这不是开箱即用的吗?
我对UltraEdit一无所知,但就正则表达式引擎而言,如果它可以从XML文档解析<title>(.*)</title>
,它可以对HTML执行完全相同的操作。
只需将最终文件标题修改为.html
而不是.xml
saveTitle = t[1]+".html";
假设你可以按照预期的那样使用该脚本(我不知道UltraEdit),我非常有信心同样的过程适用于HTML。
答案 3 :(得分:0)
在脚本方面进行了大量搜索和反复试验之后,我遇到了一个很棒的Windows程序,它将通过TITLE标签进行重命名:Flexible Renamer 8.3。作者的网站是http://hp.vector.co.jp/authors/VA014830/english/FlexRena/,它设法处理我需要的所有内容。非常感谢@coreyward和@Yuji在脚本编写方面的出色建议。