2017-06-13 142 views
-1

文件與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:安迪

由於

+1

爲什麼你排除VB?這是一種理解xml格式的scfript語言。批處理不是預定的任務。即使您使用第三方工具(如sed,'sed -e「s/<[^>] *> // g」test.xml「)刪除標籤,輸出中仍然包含」IDName「和Alex和Andy前面的數字沒有冒號。 – LotPings

+0

所以,第三方是可以的。我會考慮一下。 – Aleksey

+0

考慮使用[xpath.bat](https://github.com/npocmaka/batch.scripts/blob/master/hybrids/jscript/xpath.bat) - >'xpath.bat html.xml // tr/th' – npocmaka

回答

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,因爲有太多的:(每個標籤開始:添加)

+0

我該如何向你尋求更多幫助?我的Skype是axxler – Aleksey

+0

[這裏](https://stackoverflow.com/questions/ask)。 – Stephan

+0

@Stephan你可以在你的代碼中添加一些評論!我發現這種情況非常有幫助謝謝! – Hackoo