Ich möchte einen Stapel in Windows 10 erstellen, der die Anzahl zählt, wie oft ein bestimmtes Tag in einer XML-Datei angezeigt wird. Unten ist der Code, den ich gefunden und ausprobiert habe. Es sollte den Wert zwischen einem Satz von Tags in einer anderen Datei setzen, aber das funktioniert nicht in meinem Fall:Bat zum Zählen der Anzahl der Tage, die ein Tag in einer XML-Datei angezeigt wird
@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%a in (test.xml) do (
set "line=%%a"
for %%X in (^"^
% Do NOT remove this line %
^") do for /F "delims=" %%b in ("!line:>=%%~X!") do (
if /I "!field!" equ "<LineCde" for /F "delims=<" %%c in ("%%b") do echo %%c >> file2.txt
set "field=%%b"
)
)
Pause
Meine XML-Datei wird wie folgt dar:
<?xml version="1.0" encoding="UTF-8"?>
<Document><Mouvement>
<Commande>
<RefCommande>xxx</RefCommande>
<SystemRefCde>xx</SystemRefCde>
<StatusCommande>
<CodeStatusOpCommande>xxx</CodeStatusOpCommande>
<DateStatusOpCommande>04/09/2017</DateStatusOpCommande>
<TimeStatusOpCommande>09:13:58</TimeStatusOpCommande>
</StatusCommande>
<LineCde>
<RefLineCde>xxx</RefLineCde>
<SystemRefLigneCde>32R</SystemRefLigneCde>
<TimeHour>
<TypeDate>xxx</TypeDate>
<ValueDate>04/09/2017</ValueDate>
<TimeDate>00:00:00</TimeDate>
</TimeHour>
</LineCde>
</Commande>
</Mouvement></Document>
Kann mir jemand helfen mit Dies? Der Code funktionierte in Windows 7. Dank
Mit für:
findstr /ip /D:"\Vi\Defect+Evo\Traduction\testB"
*.xml >> log-it.txt
@echo off
setlocal EnableDelayedExpansion
set "string=findstr /R /N "^^" log-it.txt | find /C "/LineCde""
for /f %%a in ('!string!') do set count=%%a
echo %count%
del /Q log-it.txt
Es funktioniert, danke. Ich habe jedoch noch eine andere Frage: Was, wenn ich einen Ordner durchlaufen und jedes XML durchlaufen möchte, um die Zählung durchzuführen? Wie können wir das tun? – tabby
@tabby Cool. Wenn Sie das erste Problem gelöst haben, markieren Sie bitte die richtige Antwort. Ich werde die Frage in ein paar Minuten bearbeiten, um Ihre zweite Frage hinzuzufügen und zu beantworten. –
Ja, ich werde es als richtige Antwort markieren. Können Sie die Frage dennoch bearbeiten und danach beantworten? – tabby