2014-01-21 66 views
0

我试图使用批处理代码从文本文件中提取特定文本。我需要提取数据的文件将包含多行文本,行数会有所不同,这意味着指标的位置也会发生变化。下面是文本文件的样本:使用批处理从文本文件中提取特定文本

文件1:

<File> 
<General> 
    <Primary_1>1.2.3.4.5</Primary_1> 
    <Secondary_2>9.8.7.6.5</Secondary_2> 
</General> 
<Main_List> 
    <Details="Title" One="C:\Folder1\Folder2\Folder3\Folder4\Folder5" Two="I" Three="4"/> 
</Main_List> 
</File> 

我通过一些操作了已提取包含数据我从文本文件所需要的行,并将其保存到两个独立的文本文件,所以我结束了这一点:

文件2:

<Primary_1>1.2.3.4.5</Primary_1> 

文件3:

<Details="Title" One="C:\folder1\folder2\folder3\folder4" Two="A" Three="5"/> 

所以,从上面的两个文件(文件2 &文件3),我需要能够提取两个值。第一个位于| Primary_1 |之间和|/Primary_1 |指标...在这种情况下,我需要拉动“1.2.3.4.5”值。第二个值是| Details =“|和之前的值|”一= |指标...在这种情况下,我需要拉动“标题”值。

我搜索周围,找不到任何相当适合该法案。我发现最接近的是“...在同一行......”代码(Extract part of a text file using batch dos),但我一直在收到错误。任何帮助将不胜感激。谢谢。

回答

1

试试这个当两条线都在file.txt的

它的工作原理为TXT给出,如果标签是不是在文件中。

@echo off 
for /f "tokens=2 delims=<> " %%a in ('find "<Primary_1>" ^< "file.txt" ') do echo "%%a" 
for /f "tokens=2 delims==" %%a in ('find "<Details =" ^< "file.txt" ') do SET "xtitle=%%a" 
SET ntitle=%xtitle:~1% 
SET xtitle="%xtitle%" 
ECHO +%ntitle%+ or +%xtitle%+ - your choice... 

如果你想要的文本包含空格,还有一个更强大的方法使用助手批处理文件。

(Magoo的小痒 - 允许引用“标题”字符串中的空格 - 但我不知道是否需要引用或不引用变量内容...所以你得到两个。(不收取额外费用)

+0

第一个“for”行完美工作,并拉出正确的信息......“1.2.3.4.5”的数据。但是,第二个“for”行拉动了“Details”而不是“Title”。 ?谢谢。 – user3208239

+0

我的坏。看起来我错过了第三个文件中的空格如下: <详细=“标题”One =“C:\ folder1 \ folder2 \ folder3 \ folder4”Two =“A”Three =“ 5“/> 如何修改第二个语句中的分隔符以适应此空间?sp王牌是介于细节和等号之间。再次感谢。 – user3208239

+0

试试我在答案中所做的修改。 – foxidrive

相关问题