2016-09-28 15 views
-1

Ich muss lesen und möglicherweise einen Wert zwischen Tags in einer XML-Datei bearbeiten. Ich bin derzeit beschränkt auf die Verwendung einer CMD Batch-Datei als die einzige Möglichkeit zu verarbeiten (möglicherweise in der Lage sein, in Zukunft Power-Shell zu verschieben). "Die Beispieldatei.xml" befindet sich immer im selben Layout und eine vollständige Datei wird unten angezeigt.Parse Edit XML-Wert mit CMD Batch

Das Etikett von Interesse ist <MountPoint>\\.\PHYSICALDRIVE6</MountPoint>. Ich muss die Nummer des physischen Laufwerks lesen (in diesem Beispiel ist es 6) und es je nach Wert bearbeiten. Aus diesem Grund möchte ich die Lese- und Bearbeitungskomponenten der Charge getrennt halten. Jede Hilfe wird geschätzt, da meine Batch-Fähigkeiten nicht ausreichen, und ich bin nicht nahe gekommen.

Mounting in progress, wait... 
<MIPResponse Command="VIEW" Version="1.0"> 
<Drive> 
    <IsActive>F</IsActive> 
    <DeviceType>PhysicalDrive</DeviceType> 
    <PartitionType>Physical</PartitionType> 
    <MountPoint>\\.\PHYSICALDRIVE6</MountPoint> 
    <Capacity>80026361344</Capacity> 
    <CapacityString>74.53 GB</CapacityString> 
<Partition> 
    <IsActive>T</IsActive> 
    <PartitionType>NTFS/OS2 HPFS/exFAT</PartitionType> 
    <MountPoint></MountPoint> 
    <Location>1048576</Location> 
    <Capacity>104857600</Capacity> 
    <CapacityString>100.0 MB</CapacityString> 
</Partition> 
<Partition> 
    <IsActive>F</IsActive> 
    <PartitionType>NTFS/OS2 HPFS/exFAT</PartitionType> 
    <MountPoint></MountPoint> 
    <Location>105906176</Location> 
    <Capacity>79919316992</Capacity> 
    <CapacityString>74.43 GB</CapacityString> 
</Partition> 
</Drive> 
</MIPResponse> 
+0

Mögliche Duplikat [A Batch-Datei, um den Wert eines bestimmten XML-Tag zu extrahieren] (http://stackoverflow.com/questions/8217765/a-batch-file-to-extract-the -value-of-a-specific-xml-tag) – geisterfurz007

+4

CloseVote: Fragen müssen einen minimalen Versuch zeigen, das Problem zu lösen. Sagen Sie uns, was Sie versucht haben, warum es nicht funktioniert hat und wie es funktionieren soll. Zumindest sollten Sie in der Lage sein, zu googlen, bevor Sie eine Frage stellen – jeb

+0

Behandeln Sie XML-Dateien nicht als normale Klartextdateien! Verwenden Sie eine Sprache, die XML-Daten nativ analysieren und bearbeiten kann! – aschipfl

Antwort

0
ECHO Matching in file... 
setlocal enableextensions disabledelayedexpansion 
set "Result=" 
for /f "tokens=3 delims=<>" %%a in (
    'find /i "<MountPoint>\\.\PHYSICALDRIVE" ^< "The Sample File.xml"' 
) do set "Result=%%a" 
set Result=%Result:~-1% 
ECHO Found Value: PHYSICALDRIVE%Result% 

ECHO Updating the other file... 
powershell -Command "(gc 'The Other File.xml') -replace '"PHYSICALDRIVE[0-9]{1,2}"', '"PHYSICALDRIVE%Result%"' | Out-File -Encoding "ASCII" 'The Other File.xml'" 
Verwandte Themen