【问题标题】:Delete lines (or tag) from HTML-Files using batch (.bat) script使用批处理 (.bat) 脚本从 HTML 文件中删除行(或标记)
【发布时间】:2017-09-28 21:07:57
【问题描述】:

假设我有一些 HTML 文件以类似的行开头:

<HTML>
<HEAD>

    <TITLE>Some HTML Page</TITLE>
    <H1>something</H1>
    <A>something else</A>
    <A>something else fsomething else></A>
    <A>End of something</A>

    <H2>Beginning of something else
    text text text....</H2>

</HEAD> 

我需要使用 Windows Shell (cmd) 从所有这些文件中删除一些代码。 我更喜欢一种解决方案,它删除我在这种情况下不需要的标签 &lt;H2&gt; 标签,这在所有文件中都是唯一的。

但是因为如上所述,文件开头是相似的(可能更容易)解决方案,它允许我删除一系列行也可以。 在这种情况下,第 9 到 11 行

到目前为止我对一个文件和删除行方法的尝试:

@Echo OFF

Set /A "BL=9"
Set /A "EL=11"
Set /A "Z=%EL%-%BL%"

(Type "inputFile.html" | MORE +%BL%)>"inputFile.html"

我可能需要 MORE 的 Opposite 函数调用,所以我可以首先将第 9 行之前的所有内容写入文件,然后在第二步中使用MORE 命令和&gt;&gt; 在第 11 行之后附加所有内容。

我试图扩展这个答案:https://stackoverflow.com/a/12737334/4543887 满足我的需要,但是我的命令行技能非常基本。

我知道使用例如sed 会很容易,但我仅限于cmd

【问题讨论】:

    标签: html windows batch-file command-line cmd


    【解决方案1】:

    如果您不关心某些标签缩进的改变,您可以在 JScript 中使用 DOM 方法。通常,将结构化标记数据(例如 HTML、XML、JSON 等)进行对象化和解析要比将其作为纯文本进行破解和抓取要好。使用 .bat 扩展名和盐来保存它。

    @if (@CodeSection == @Batch) @then
    @echo off & setlocal
    
    set "in=test.html"
    
    rem // run JScript hybrid code, passing the HTML content via stdin
    <"%in%" cscript /nologo /e:JScript "%~f0"
    
    rem // Exit script.  You're done.  w00p w00p!
    goto :EOF
    
    @end // end Batch / begin JScript hybrid code
    
    var DOM = WSH.CreateObject('htmlfile'),
        stdin = WSH.CreateObject('Scripting.FileSystemObject').GetStandardStream(0).ReadAll(),
        trash = {};
    
    // force loading IE11 engine then clear
    DOM.write('<meta http-equiv="x-ua-compatible" content="IE=11" />');
    DOM.close();
    
    // load HTML into the IE11 engine and manipulate
    DOM.write(stdin);
    trash = DOM.getElementsByTagName('h2')[0];
    trash.parentNode.removeChild(trash);
    
    // output modified HTML
    WSH.Echo(DOM.documentElement.outerHTML);
    DOM.close();
    

    htmlfile COM 对象在 Microsoft 的网站上没有很好的记录。但是你可以通过做来查看它的所有属性和方法

    powershell "new-object -COM htmlfile | gm | more"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 2018-07-02
      相关资源
      最近更新 更多