重命名多个 HTML 文件-6ren
gpt4 book ai didi

javascript - 使用 javascript 在每个文件中使用 重命名多个 HTML 文件

转载 作者:可可西里 更新时间:2023-11-01 12:53:30 29 4
gpt4 key购买 nike

我曾使用 HTTRACK 从政府网站下载联邦法规,生成的 HTML 文件的命名不直观。每个文件都有一个 <TITLE></TITLE>标签集,可以很好地以一种适合电子书创作的方式命名每个文件。我想把这些规定变成我的 Kindle 的电子书,这样我就可以随时查阅这些规定,而不是随身携带大量的书籍。

我的首选文本/十六进制编辑器 UltraEdit Professional 15.20.0.1026 通过嵌入 JavaScript 引擎启用了脚本命令。在研究我的问题的可能解决方案时,我发现了 xmlTitleSave在 IDM UltraEdit 网站上。

// ----------------------------------------------------------------------------
// 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);

我的问题有两个方面:

  1. 能否修改此 JavaScript 以提取 <TITLE></TITLE> HTML 文件中的内容并重命名文件?
  2. 如果 JavaScript 不能轻易修改,是否有脚本/程序/黑魔法/动物祭祀可以完成同样的事情?

编辑:通过删除 UltraEdit.activeDocument.unicodeToASCII();,我已经能够让脚本按预期工作行并将文件扩展名更改为 .html .我现在唯一的问题是,虽然此脚本适用于单个打开的文件,但它不会批处理目录。

最佳答案

您几乎可以使用任何“可编写脚本”的语言来快速执行此类操作。 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 脚本适合您,这可能会很迟钝,但对于运行不同环境的任何人来说,希望这是有用的。

关于javascript - 使用 javascript 在每个文件中使用 <TITLE></TITLE> 重命名多个 HTML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4697236/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com