如何在windows命令中搜索xml文件中的特定单词

时间:2017-11-23 12:24:50

标签: c# cmd

我的文件中包含以下内容:

--user

我想在c#中的PostBuild或AfterBuild事件中读取此文件。由于在此事件期间可以访问Windows命令,因此我尝试使用cmd来读取其中定义的变量值,即“MajorVersion”,“MinorVersion”,“BuildNumber”和“RevisionNumber”的值。然后我将运行命令以使用这些变量重命名文件夹。我怎样才能在cmd提示符/批处理中读取这些特定值?

对于我上面发布的文件内容,我希望将文件夹重命名为“2.5.64.0”。

我研究了这个解决方案 - Read XML file with windows batch 在上面的链接中,两个节点之间存在值,但在我的情况下,值作为属性的值存在。

2 个答案:

答案 0 :(得分:0)

我在批处理文件中使用以下命令来实现所需的输出:

@echo off
setlocal enableextensions disabledelayedexpansion

set "MajorVersion="
set "MinorVersion="
set "BuildNumber="
set "RevisionNumber="

for /f "tokens=4 delims= " %%a in ('findstr /c:"MajorVersion =" xmlFile.xml') do set "MajorVersion=%%a"
for /f "tokens=4 delims= " %%a in ('findstr /c:"MinorVersion =" xmlFile.xml') do set "MinorVersion=%%a"
for /f "tokens=4 delims= " %%a in ('findstr /c:"BuildNumber =" xmlFile.xml') do set "BuildNumber=%%a"
for /f "tokens=4 delims= " %%a in ('findstr /c:"RevisionNumber =" xmlFile.xml') do set "RevisionNumber=%%a"

echo %MajorVersion%
echo %MinorVersion%
echo %BuildNumber%
echo %RevisionNumber%"

set "FullVersion=%MajorVersion%.%MinorVersion%.%BuildNumber%.%RevisionNumber%"
echo %FullVersion%

rename "OldFolderName" %FullVersion%

答案 1 :(得分:-1)

据我所知,您无法在VS后期构建事件中将文件读入变量。 但是,您可以运行外部批处理文件并为其提供参数。您可以触发此批处理文件并使批处理文件读取xml文件并创建所需的文件夹:

CD "$(ProjectDir)"
IF EXIST postBuild.bat (
@ECHO Post-build script exists at: $(ProjectDir)postBuild.bat - executing...
CALL "$(ProjectDir)postBuild.bat" "$(XmlFilePath)" 
)

项目目录中的批处理文件postBuild.bat看起来像这样:

@REM **********
@REM Post-build script; assumes params:
@REM postBuild.bat "$( XmlFilePath)"
@REM **********

@ECHO XmlFilePath: %1
[...]