[英]Replacing text line in Xml file with string and variable using batch
因此,我面临的挑战如下。
我收到一个看起来像这样的xml文件:
<Person>
<FirstName>John</FirstName>
<LastName>Doe</LastName>
<MiddleName>x</MiddleName>
<Credential>
<Name>John Doe</Name>
<GUID>xxxxxx </GUID>
<ExpirationDateTime>5/31/2017 10:59:00 PM</ExpirationDateTime>
<ObjectID>5051</ObjectID>
</Credential>
</Person>
现在,我的目标是将到期日期字段更改为凌晨1点的当前日期。
到目前为止,这就是我所拥有的。 我可以摆脱该字段,并且可以用我需要的格式来回显日期时间。但是我想不出一种在新位置重新插入新到期日期的方法
@echo off
cd %~dp0
copy Original.xml In.xml
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%a/%%b/%%c)
set mytime=01:00:00 AM
echo %mydate% %mytime%
findstr /v "ExpirationDateTime" In.xml>Out.xml
PAUSE
我正在考虑重新创建该字段,然后在其中找到并插入它。 但是批处理文件不是我的专业领域。 什么命令可以帮助完成此任务?
这可能对您有用。 这不是非常优雅,因为它使用临时文件存储最终分配给环境变量的值,但是至少批处理文件会在其自身之后清除。 它创建一个“ result.xml”文件作为其输出。 请注意,我必须更改批处理文件中的日期格式,因为我的语言环境与您的语言环境不同,但只需将其重置为您的语言环境即可。
@Echo off
Setlocal EnableDelayedExpansion
for /f "tokens=1-3 delims=- " %%a in ('date /t') do (set mydate=%%a-%%b-%%c)
set mytime=01:00:00 AM
set isFound=
if exist result.xml del result.xml
for /F "delims=" %%i in (test.xml) do (
echo "%%i" | find /c "ExpirationDateTime" > tst.tst
set /p isFound=<tst.tst
del tst.tst
if "!isFound!"=="1" (
echo ^<ExpirationDateTime^>%mydate% %mytime%^</ExpirationDateTime^> >> result.xml
) ELSE (
echo %%i >> result.xml
)
)
set isFound=
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.