文件与HTML代码:Windows批处理带标签
<table>
<tr><th>ID</th><th>NAME</th></tr>
<tr><th>1</th><th>Alex</th></tr>
<tr><th>2</th><th>Andy</th></tr></table>
如何输出数据,而标签与Windows .bat文件? (无VB)
像这样: 1:亚历 2:安迪
由于
文件与HTML代码:Windows批处理带标签
<table>
<tr><th>ID</th><th>NAME</th></tr>
<tr><th>1</th><th>Alex</th></tr>
<tr><th>2</th><th>Andy</th></tr></table>
如何输出数据,而标签与Windows .bat文件? (无VB)
像这样: 1:亚历 2:安迪
由于
我喜欢批次,但诚实:它不是用于处理XML文件的合适的工具。 下面是更多的逻辑的锻炼和痛苦而不是合适的解决方案(但工程至少有一些你的例子...。):
@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%a in (t.txt) do call :process "%%a"
goto :eof
:process
set "line=%~1"
set flag=0
set var=
for /l %%i in (0,1,100) do (
if "!line:~%%i,1!"=="<" (
set /a "flag+=1"
set "var=!var!:"
)
if !flag!==0 set "var=!var!!line:~%%i,1!"
if "!line:~%%i,1!"==">" set /a flag-=1
)
for /f "tokens=1,2 delims=:" %%b in ("!var!") do echo %%b:%%c
工作原理:
第一for
循环各个过程文本文件的一行(一个接一个)。
子程序按字符处理行。它每次增加flag
变量,它会遇到一个<
(加上一个:
,因为我们知道,(可能)值在它的末尾),并在每个>
处减少。因此,如果flag
为零,我们就是标签的“外部”,并且可以将该字符添加到变量中。
最后for
只是重新格式化var
,因为有太多的:
(每个标签开始:
添加)
为什么你排除VB?这是一种理解xml格式的scfript语言。批处理不是预定的任务。即使您使用第三方工具(如sed,'sed -e“s/<[^>] *> // g”test.xml“)删除标签,输出中仍然包含”IDName“和Alex和Andy前面的数字没有冒号。 – LotPings
所以,第三方是可以的。我会考虑一下。 – Aleksey
考虑使用[xpath.bat](https://github.com/npocmaka/batch.scripts/blob/master/hybrids/jscript/xpath.bat) - >'xpath.bat html.xml // tr/th' – npocmaka