【发布时间】:2012-06-13 11:55:32
【问题描述】:
你能帮我列出这个文件中的浏览器吗 http://techpatterns.com/downloads/firefox/useragentswitcher.xml 成txt文件,用%tab%分隔符分隔?
应该有 3 或 4 列:
1) 示例数据中的文件夹描述:<folder description="Browsers - Windows">
2) 示例数据中的浏览器类型:<folder description="Legacy Browsers">
3) 示例数据中的用户代理:<useragent description="Avant Browser 1.2" useragent="Avant Browser/1.2.789rel1 (http://www.avantbrowser.com)" app
在这里我看到第一个问题,因为某些浏览器不在文件夹 <folder description="Legacy Browsers">" 中,而是在 <separator/> 下
所以第一列应该定义系统,第二列是类型,第三列是浏览器。
下一个问题是 Devises 文件夹包含一个文件夹。
@echo off
Setlocal EnableDelayedExpansion
SET file=useragentswitcher.xml
SET delim="
FOR /F "tokens=* skip=1" %%F IN (!file!) DO (
REM echo %%F
call :parse "%%F" > temp.txt
FOR /F "tokens=1,2,3,4,5,6,7 skip=1 delims=" %%A IN (temp.txt) DO (
IF "%%A"=="folder" (
SET /A level=!level!+1
echo Level:!level!
) ELSE IF "%%A"=="/folder" (
SET /A level=!level!-1
echo Level:!level!
)
echo A:%%A
)
pause
)
exit /b
:parse
Setlocal EnableDelayedExpansion
SET A=%*
REM REMOVE double paranthesis and <>
SET A=!A:~2,-2!
REM replace double qoutes
SET A=!A:"=µ!
FOR /F "tokens=1,2 delims=µ=" %%A IN ("!A!") DO (
SET first=%%A
SET second=%%B
echo !first!
FOR /F "tokens=1,2 delims= " %%A IN ("!first!") DO (
echo %%A
echo %%B
)
echo !second!
)
endlocal
exit /b
这会解析该行的一个标签,我现在将使用它。
【问题讨论】:
-
你的代码哪里出错了?我看不到任何编程问题?
-
我会粘贴代码,如果我有的话。现在我被困在这里:
FOR /F "tokens=1,2 delims=^"" %%B IN ("%%A") DO我应该如何使用双引号作为分隔符? -
代码已更新,开始使用效果更好。
-
是否可以将 linefeed 添加为 delim? 我尝试做的是将文件行解析为变量
%%A %%B %%C %%D %%E %%F
标签: xml batch-file cmd