本帖最后由 WHY 于 2017-11-15 21:41 编辑
PowerShell 代码,使用方法:保存为 test.ps1,右键单击 test.ps1,选择 "使用 PowerShell 运行"。- $dtm = [DateTime]'2017-11-13 T00:00:19.1870762+08:00';
- $reg = '(?i)(?<=<Time>)[\S\s]*?(?=</Time>)';
-
- #遍历E:\a\a1,a2,a3...文件夹中的b.xml文件,以父文件夹名称排序
- $arr = dir 'E:\a\a*\b.xml' | sort{$_.Directory.Name.PadLeft(10,'0')};
-
- $arr | ForEach {
- $fmt = '{0:s}{1:.fffffff}{2:zzz}' -f $dtm, $dtm, $dtm; #日期格式化
- $dtm = $dtm.AddMinutes(22); #日期递增22分钟
- $str = [IO.File]::ReadAllText($_, [Text.Encoding]::UTF8); #打开并读取文件内容
- $offSet = [regex]::Match($str, $reg, 'RightToLeft').Index; #获取最后一个Time节点偏移值
- $str = ([regex]$reg).Replace($str, $fmt, 1, $offSet); #替换
- [IO.File]::WriteAllText($_, $str, [Text.Encoding]::UTF8); #保存文件
- }
复制代码
- $dtm = [DateTime]'2017-11-13 T00:00:19.1870762+08:00';
- $arr = dir E:\a\a*\b.xml | sort{$_.Directory.Name.PadLeft(10,'0')};
-
- $arr | ForEach {
- $xml = [xml](type $_ -Encoding UTF8);
- $fmt = '{0:s}{1:.fffffff}{2:zzz}' -f $dtm, $dtm, $dtm;
- $dtm = $dtm.AddMinutes(22);
- (Select-XML -xml $xml -XPath '//Time')[-1].Node.InnerText = $fmt;
- $xml.save($_)
- }
复制代码
|