Как преобразовать пакетный файл в файл XML - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть файл, в котором были написаны команды Xcopy.Теперь мне нужно переместить их в формат файла xml, чтобы я мог выполнить их в Msbuild.

Ниже приводится содержимое моего файла

xcopy File1 Destinationfolder1
Xcopy File2 DestinationFolder2
Xcopy File3 DestinationFolder1

Я хотел бы сделать его как файл XML какследует

<Xcopy include="File1">
<Destination> DestinationFolder1 </Destination>
</Xcopy>

<Xcopy Include="File2">
<Destination> DestinationFolder2 </Destination>
</Xcopy>

and so on..

Есть ли сценарий powershell или какой-то другой простой способ добиться этого?

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Следующий командный файл cmd дает именно тот результат, который вы ищете:

@echo off
rem Syntax: conv inputfile resultfile
set input=%1
set result=%2
copy nul %result%
for /F "tokens=2,3*" %%G in (%input%) do (
  echo ^<Xcopy include="%%G"^> >> %result%
  echo ^<Destination^> %%H ^</Destination^> >> %result%
  echo ^</Xcopy^> >> %result%
  echo. >> %result%
)
1 голос
/ 30 декабря 2011

Как насчет этого:

clear
$res = Get-Content c:\PST\1.txt

$xml = [xml] "<root namespace=`"namespace`"></root>"
foreach($line in $res)
{
# If words are separated by more than one whitespace
$line=$line -replace '\s+', ' ' 
$values = $line.Split(" ")
$insert = [xml] [string]::Format("<Xcopy include=`"{0}`"> <Destination>{1}</Destination> </Xcopy>", $values[1], $values[2])
$importNode = $xml.ImportNode($insert.DocumentElement, $true) 
$xml.root.AppendChild($importNode) |Out-Null
}
$xml.Save("c:\PST\result.xml")

Это работает, но я уверен, что гуру PowerShell могут сделать это намного проще

...