文件與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