标题: [文件操作] 批处理怎样遍历文件夹中的指定xml的文件并修改其中指定元素/标签/节点的内容? [打印本页]
作者: jsbob 时间: 2017-2-13 13:48 标题: 批处理怎样遍历文件夹中的指定xml的文件并修改其中指定元素/标签/节点的内容?
本帖最后由 pcl_test 于 2017-4-29 07:56 编辑
我已经搜了好多帖子了,但还是没搞定,下面是需求:
修改一个目录(targetPath)下所有叫sourcemonitor.xml文件中的project_name节点,修改为任意字符,只要每个sourcemonitor.xml中的都不一样就行了:
<project_name>要修改为不一样的字符</project_name>
作者: WHY 时间: 2017-2-14 15:46
PowerShell 可以这样:- dir sourcemonitor.xml -Recurse | %{
- $xml = [xml](type $_)
- $xml.GetElementsByTagName('project_name') | %{ $_.InnerXml = 'Str' + (++$global:i) }
- $xml.Save($_)
- }
复制代码
作者: taofan712 时间: 2017-2-14 20:43
本帖最后由 taofan712 于 2017-2-14 21:32 编辑
作业练习:- @echo off
- setlocal enabledelayedexpansion
- set /a aa=%random%%%100
- for /f "delims=" %%a in ('dir /a-d /s /b targetpath\sourcemonitor.xml') do (
- set /a aa+=1
- for /f "tokens=2 delims=><" %%b in ('find /i "</project_name>" "%%a"') do ( set target=%%b
- )
- for /f "skip=2 tokens=1,* delims=[]" %%c in ('find /i /n "</project_name>" "%%a"') do ( set line=%%c
- )
- for /f "skip=2 tokens=1* delims=[]" %%d in ('find /n /v "" "%%a"') do (
- set list=%%d
- set str=%%e
- if "!list!"=="!line!" (
- for %%f in (!target!) do (
- for %%g in (!aa!) do (
- set str=!str:%%f=%%g%%g%%g!
- echo;!str!
- )
- )
- ) else (
- echo;!str!
- )
- )
- )>>"%%~dpa_new_sourcemonitor.xml"
- rem move /y "%%~dpa_new_sourcemonitor.xml" "%%a"
- echo;完毕&pause>nul
复制代码
【缩进排版不知道对不对】
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |