使用批处理(.bat)脚本从HTML文件中删除行(或标记)

比方说,我有几个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)从所有这些文件中删除一些代码。 我更喜欢一个解决scheme,删除标签,我不需要在这种情况下<H2>标签,这将是唯一的所有文件。

但是因为如前所述,文件的开头是类似的(可能更容易)的解决scheme,它允许我删除一系列的行也可以在这种情况下行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行到文件中的所有内容,并在第二步中将第11行之后的所有内容都与MORE命令和>>

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

我知道这将是很容易使用例如sed ,但Im限于cmd

如果你不关心被改变的一些标签缩进,你可以在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对象在微软网站上没有很好的记录。 但是你可以通过做看到所有的属性和方法

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