第二个和第三个for循环的批量输出不可见

时间:2016-10-25 12:36:16

标签: xml batch-file xml-parsing

我正在解析xml并尝试在一个txt文件中编写所有形式良好且有效的xmls(请参阅string1)。另一种类型的xmls应该写在另一个txt文件中(参见字符串2,3)。应分析的xml文件始终具有以下结构:

<status>Well-Formed and valid</status> 

<status>Well-Formed, but not valid </status>

<status>Not well-formed  </status>

问题是我只能用string1捕获xmls。在txt文件中没有带有string2和string3的xmls的输出。我不明白为什么?

 set string1=Well-Formed and valid
    set string2=Well-Formed, but not valid 
    set string3=Not well-formed  

for /f %%i in ('dir /b /s C:\Users\NekhayenkoO\outputxml\') do (
 for /f "tokens=3 delims=>/<" %%h in ('find "%string3%" %%i ') do (
echo %%~ni %%h >> C:\Users\N\outputxml\formed2.txt
)

for /f "tokens=3 delims=>/<" %%h in ('find "%string1%" %%i ') do (
 echo %%~ni %%h >> C:\Users\N\outputxml\Well-formed_and_valid.txt
 )

 for /f "tokens=3 delims=>/<" %%h in ('find "%string2%" %%i ') do (
  echo %%~ni %%h >> C:\Users\N\outputxml\formed1.txt 
 )
)

1 个答案:

答案 0 :(得分:0)

我已对您提供的文件进行了快速更改,以满足您在每个内部循环中使用相同 %% h 的事实,并且您的find命令输出不是&#39 ; t产生预期的产出。

set string1=Well-Formed and valid
set string2=Well-Formed, but not valid
set string3=Not well-formed
for %%i in (j k l) do (set %%i=0)
for /f "delims=" %%i in ('dir/b/s C:\Users\NekhayenkoO\outputxml') do (
    for /f "tokens=3 delims=>/<" %%j in ('find "%string3%"^<"%%i"') do (
        set/a j+=1
        >>C:\Users\N\outputxml\formed2.txt echo %%~ni %%j)
    for /f "tokens=3 delims=>/<" %%k in ('find "%string1%"^<"%%i"') do (
        set/a k+=1
        >>C:\Users\N\outputxml\Well-formed_and_valid.txt echo %%~ni %%k)
    for /f "tokens=3 delims=>/<" %%l in ('find "%string2%"^<"%%i"') do (
        set/a l+=1
        >>C:\Users\N\outputxml\formed1.txt echo %%~ni %%l))
echo=totals&echo=%string1%=%i%&echo=%string3%=%j%&echo=%string3%=%k%

看看它是否有助于你。