多个XML文件中的批量查找和替换

时间:2015-07-16 20:23:06

标签: xml replace find notepad++ multiple-files

我需要在700多个XML文件上查找和替换以下内容:

<base>7.4</base>

需要成为

<base>7.2</base>

然而,我必须使用的唯一工具是Notepad ++,当我尝试执行&#34;替换文件时它会不断崩溃&#34;功能。还有另一种简单的方法来执行此质量查找和替换吗?我不是一个程序员,但他们都在同一个文件夹中,也许我可以使用.bat文件来运行它们?关于做什么或如何写的任何建议都会非常感激。

提前致谢,

克莱特

2 个答案:

答案 0 :(得分:0)

XML很难处理,因为虽然看起来像一样纯文本 - 但它实际上并非如此。因此,使用基于文本的&#39;是不理想的。模式匹配以替换它,因为......好吧,你可以打破它的格式。就个人而言,我建议:

  • 下载perl(与activestate社区版一样)
  • 安装XML::Twig模块(ppm install XML::Twig);
  • 使用以下脚本 - 在命令行中指定要更改的文件(例如thisscript.pl file1.xml file2.xml file3.xml

喜欢这个

#!/usr/bin/env perl

use strict;
use warnings;

use XML::Twig;

sub replace_base {
    my ( $twig, $base ) = @_;
    if ( $base->text eq "7.2" ) {
        $base->set_text("7.4");
    }
}

#iterate the files on the command line
foreach my $filename (@ARGV) {

    #set up the processor
    my $twig = XML::Twig->new(
        #output formatting
        'pretty_print'  => 'indented_a',
        #every time a 'base' element is encountered, run replace_base on it. 
        'twig_handlers' => { 'base' => \&replace_base }
    );
    #process this file
    $twig->parsefile($filename);

    #save the results to a '.new' file. 
    open( my $output, ">", "$filename.new" ) or die $!;
    print {$output} $twig->sprint;
    close($output);
}

答案 1 :(得分:0)

您可以从http://www.powergrep.com/

下载PowerGREP的免费试用版

然后:

  1. 使用左侧的导航器浏览到包含文件的文件夹
  2. 选择Search and replace作为您的操作类型
  3. 在搜索框
  4. 中输入<base>7.4</base>
  5. 在替换
  6. 中输入<base>7.2</base>
  7. 预览搜索,确保选择正确的文件
  8. 点击替换
  9. 输入值,然后点击预览

    enter image description here

    预览亮点建议已更改

    enter image description here

    点击&#39;替换&#39;

    enter image description here

    文件已更改

    enter image description here