在多个XML文件中批量查找和替换
我需要在700多个XML文件上查找并替换以下文件:在多个XML文件中批量查找和替换,xml,replace,find,notepad++,Xml,Replace,Find,Notepad++,我需要在700多个XML文件上查找并替换以下文件: <base>7.4</base> 7.4 需要成为 <base>7.2</base> 7.2 但是,我必须使用的唯一工具是Notepad++,当我尝试执行“在文件中替换”功能时,它会不断崩溃。是否有其他简单的方法来执行此批量查找和替换?我不太擅长编码,但它们都在同一个文件夹中,也许有一种方法我可以使用.bat文件来运行它们?任何关于做什么或如何写作的建议都将不胜感激 提前感谢, Colet
<base>7.4</base>
7.4
需要成为
<base>7.2</base>
7.2
但是,我必须使用的唯一工具是Notepad++,当我尝试执行“在文件中替换”功能时,它会不断崩溃。是否有其他简单的方法来执行此批量查找和替换?我不太擅长编码,但它们都在同一个文件夹中,也许有一种方法我可以使用.bat文件来运行它们?任何关于做什么或如何写作的建议都将不胜感激
提前感谢,
ColetteXML处理起来很烦人,因为虽然它看起来像纯文本,但实际上却不是。因此,使用“基于文本”的模式匹配来取代它并不理想,因为。。。好吧,你可以破坏它的格式。我个人建议:
- 下载perl(如activestate社区版)
- 安装
模块(ppm安装XML::Twig
)李>XML::Twig
- 使用下面的脚本-在命令行上指定要更改的文件(例如
)thisscript.pl file1.xml file2.xml file3.xml
您可以从下载PowerGREP的免费试用版 然后:
Search and replace
作为操作类型7.4
7.2
使用python(2或3,没关系)。你还需要这个问题的答案吗?谢谢你的建议,但如果我必须指定每个文件名,这几乎同样乏味。我不希望他们将结果保存到新文件中,只需修改旧文件即可。我有一个文件夹,里面有500个文件。我只需要在每个文件中搜索7.4并替换为7.2。不确定这是否容易实现。您确实发现可以设置输入和输出文件名,对吗?无法在Windows上进行在位编辑。这是行不通的,但你可以先重命名旧文件。@Sobrique当然,你可以在Windows上编辑文件,而无需复制。您不会真的认为Word和任何其他文本编辑器会创建修改文件的副本:-)
#!/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);
}