Захват определенных данных с помощью пакетного сценария

Привет, поэтому мне нужна помощь в том, как я могу получить определенные данные из нескольких файлов XML и поместить их в переменную или в один список.

Пример XML приведен ниже.

<?xml version = "1.0" encoding = "utf-8"?>
<Data>
  <DataType>Temptale</DataType>
  <MonitorType>Temptale Ultra</MonitorType>
  <SerialNumber>MAH6P002K0</SerialNumber>
  <NumberOfDataPoints>402</NumberOfDataPoints>
  <FirstActivationTime>1/1/1970 12:00:00 AM</FirstActivationTime>
  <FirstDataPointTime>1/18/2023 12:36:23 AM</FirstDataPointTime>
  <StartTime>1/18/2023 12:36:23 AM</StartTime>
  <StopTime>1/18/2023 3:57:08 AM</StopTime>
  <Configuration>
    <SensitechConfiguration>
      <ProductID>10</ProductID>
      <FirmwareVersion>615</FirmwareVersion>
      <CustomerResets>0</CustomerResets>
      <UserInfoCharEncoding>ASCII</UserInfoCharEncoding>
      <EepromSize>EEPROM_16K</EepromSize>
      <PrimarySensorTypeID>BIO</PrimarySensorTypeID>
      <CommandByte value = "01">STOPPED</CommandByte>
      <RadioSupported>false</RadioSupported>
      <BlockDownload>true</BlockDownload>
      <PrimarySensorThermType>13</PrimarySensorThermType>
      <PrimarySensorProbe>false</PrimarySensorProbe>
      <SecondarySensorTypeID>AMBIENT</SecondarySensorTypeID>
      <SecondarySensorThermType>0</SecondarySensorThermType>
      <SecondarySensorProbe>false</SecondarySensorProbe>
      <SecondarySensorEnabled>false</SecondarySensorEnabled>
      <Sensor1CalibrationOffset1>0</Sensor1CalibrationOffset1>
      <Sensor1CalibrationOffset2>0</Sensor1CalibrationOffset2>
      <Sensor1CalibrationOffset3>0</Sensor1CalibrationOffset3>
      <TimeZoneOffset>0</TimeZoneOffset>
      <Add1PercentRH>false</Add1PercentRH>
      <Add2PercentRH>false</Add2PercentRH>
      <TemperatureCompensationDisable>false</TemperatureCompensationDisable>
      <IdealTemperatureRangeEnable>false</IdealTemperatureRangeEnable>
      <PrintCertificateEnable>true</PrintCertificateEnable>
      <LcdHeartbeatIcon>false</LcdHeartbeatIcon>
      <TtvFileCreationDisable>false</TtvFileCreationDisable>
      <TimeZoneShiftEnable>false</TimeZoneShiftEnable>
      <TimeZoneDaylightEnable>false</TimeZoneDaylightEnable>
      <PdfFileCreationOption>CreateFull</PdfFileCreationOption>
      <ConfigurationPasswordEnable>false</ConfigurationPasswordEnable>
      <DownloadPasswordEnable>false</DownloadPasswordEnable>
      <LcdDisplayAlarmNumbers>false</LcdDisplayAlarmNumbers>
      <OkAlarmPrefixEnable>false</OkAlarmPrefixEnable>
      <NormalizedGridlineEnable>false</NormalizedGridlineEnable>
      <PDF_AFormat>false</PDF_AFormat>
      <PdfPasswordEnable>false</PdfPasswordEnable>
      <TtvPasswordEnable>false</TtvPasswordEnable>
      <PdfLanguage>ENGLISH</PdfLanguage>
      <ExpirationDate>1/1/1970 12:00:00 AM</ExpirationDate>
    </SensitechConfiguration>
    <UserConfiguration>
      <MeasurementInterval>30</MeasurementInterval>
      <StartUpDelay>0</StartUpDelay>
      <StopButtonEnable>true</StopButtonEnable>
      <StopButtonDelay>false</StopButtonDelay>
      <MultiDrop>false</MultiDrop>
      <LcdAlarmNotification>true</LcdAlarmNotification>
      <StartButtonDelay>false</StartButtonDelay>
      <SoftwareVersion>6921</SoftwareVersion>
      <TripNumber>0</TripNumber>
      <LcdBlink>false</LcdBlink>
      <LcdTemperatureUnit>Fahrenheit</LcdTemperatureUnit>
      <LcdSummary>true</LcdSummary>
      <CelsiusWith2Decimal>false</CelsiusWith2Decimal>
      <DisplayCurrentTemperature>true</DisplayCurrentTemperature>
      <FlashDriveWriteEnable>true</FlashDriveWriteEnable>
      <LcdContrast>7</LcdContrast>
      <LcdStartupDelayIconEnable>false</LcdStartupDelayIconEnable>
      <StopButtonReconfigureEnable>false</StopButtonReconfigureEnable>
      <ShippingInformationEnable>true</ShippingInformationEnable>
      <MktActivationEnergy>83.144</MktActivationEnergy>
      <IdealRangeHigh>158</IdealRangeHigh>
      <IdealRangeLow>-22</IdealRangeLow>
      <LcdAlarmCrossCheck>true</LcdAlarmCrossCheck>
      <LcdAlarmTimeDisplayEnable>false</LcdAlarmTimeDisplayEnable>
      <LcdAlarmTimeDisplayOption>Remaining</LcdAlarmTimeDisplayOption>
      <LcdAlarmNumber>Alarm1</LcdAlarmNumber>
      <TemperatureInStartupDelay>false</TemperatureInStartupDelay>
      <ExpirationDateEnable>false</ExpirationDateEnable>
      <TwoAlarmMode>false</TwoAlarmMode>
      <LedBlink>true</LedBlink>
      <LedStopBlink>false</LedStopBlink>
      <RemainingBatteryLife>0</RemainingBatteryLife>
    </UserConfiguration>
    <Passwords>
      <ConfigurationPassword></ConfigurationPassword>
      <DownloadPassword></DownloadPassword>
    </Passwords>
  </Configuration>
  <UserInformation></UserInformation>
  <ProgrammerName></ProgrammerName>
  <StatusWhenRead>
    <ReadTime>1/18/2023 4:57:14 AM</ReadTime>
    <CurrentTime>1/18/2023 3:57:18 AM</CurrentTime>
    <LastTemperature>72.2</LastTemperature>
  </StatusWhenRead>
  <Sensor index = "Sensor1">
    <DataPoints>
      <Data number = "1" marked = "false">71.7</Data>
      <Data number = "2" marked = "false">71.8</Data>
      <Data number = "3" marked = "false">71.9</Data>
      <Data number = "4" marked = "false">71.9</Data>
      <Data number = "5" marked = "false">71.9</Data>
      <Data number = "6" marked = "false">71.8</Data>
      <Data number = "7" marked = "false">71.8</Data>
      <Data number = "8" marked = "false">71.8</Data>
      <Data number = "9" marked = "false">71.8</Data>
      <Data number = "10" marked = "false">71.8</Data>
      <Data number = "11" marked = "false">71.7</Data>
      <Data number = "12" marked = "false">71.7</Data>
      <Data number = "13" marked = "false">71.7</Data>
      <Data number = "14" marked = "false">71.7</Data>
      <Data number = "15" marked = "false">71.7</Data>
      <Data number = "16" marked = "false">71.7</Data>
      <Data number = "17" marked = "false">71.6</Data>
      <Data number = "18" marked = "false">71.6</Data>
      <Data number = "19" marked = "false">71.6</Data>
      <Data number = "20" marked = "false">71.6</Data>
      <Data number = "21" marked = "false">71.6</Data>
      <Data number = "22" marked = "false">71.6</Data>
      <Data number = "23" marked = "false">71.6</Data>
      <Data number = "24" marked = "false">71.5</Data>
      <Data number = "25" marked = "false">71.6</Data>
      <Data number = "26" marked = "false">71.5</Data>
      <Data number = "27" marked = "false">71.5</Data>
      <Data number = "28" marked = "false">71.5</Data>
      <Data number = "29" marked = "false">71.5</Data>
      <Data number = "30" marked = "false">71.5</Data>
      <Data number = "31" marked = "false">71.5</Data>
      <Data number = "32" marked = "false">71.5</Data>
      <Data number = "33" marked = "false">71.4</Data>
      <Data number = "34" marked = "false">71.5</Data>
      <Data number = "35" marked = "false">71.4</Data>
      <Data number = "36" marked = "false">71.4</Data>
      <Data number = "37" marked = "false">71.4</Data>
      <Data number = "38" marked = "false">71.4</Data>
      <Data number = "39" marked = "false">71.4</Data>
      <Data number = "40" marked = "false">71.4</Data>
      <Data number = "41" marked = "false">71.4</Data>
      <Data number = "42" marked = "false">71.4</Data>
      <Data number = "43" marked = "false">71.3</Data>
      <Data number = "44" marked = "false">71.3</Data>
      <Data number = "45" marked = "false">71.3</Data>
      <Data number = "46" marked = "false">71.3</Data>
      <Data number = "47" marked = "false">71.3</Data>
      <Data number = "48" marked = "false">71.3</Data>
      <Data number = "49" marked = "false">71.3</Data>
      <Data number = "50" marked = "false">71.3</Data>
      <Data number = "51" marked = "false">71.3</Data>
      <Data number = "52" marked = "false">71.3</Data>
      <Data number = "53" marked = "false">71.3</Data>
      <Data number = "54" marked = "false">71.3</Data>
      <Data number = "55" marked = "false">71.3</Data>
      <Data number = "56" marked = "false">71.3</Data>
      <Data number = "57" marked = "false">71.3</Data>
      <Data number = "58" marked = "false">71.2</Data>
      <Data number = "59" marked = "false">71.2</Data>
      <Data number = "60" marked = "false">71.2</Data>
      <Data number = "61" marked = "false">71.2</Data>
      <Data number = "62" marked = "false">71.2</Data>
      <Data number = "63" marked = "false">71.2</Data>
      <Data number = "64" marked = "false">71.2</Data>
      <Data number = "65" marked = "false">71.2</Data>
      <Data number = "66" marked = "false">71.2</Data>
      <Data number = "67" marked = "false">71.2</Data>
      <Data number = "68" marked = "false">71.2</Data>
      <Data number = "69" marked = "false">71.2</Data>
      <Data number = "70" marked = "false">71.2</Data>
      <Data number = "71" marked = "false">71.2</Data>
      <Data number = "72" marked = "false">71.2</Data>
      <Data number = "73" marked = "false">71.2</Data>
      <Data number = "74" marked = "false">71.2</Data>
      <Data number = "75" marked = "false">71.1</Data>
      <Data number = "76" marked = "false">71.2</Data>
      <Data number = "77" marked = "false">71.1</Data>
      <Data number = "78" marked = "false">71.1</Data>
      <Data number = "79" marked = "false">71.1</Data>
      <Data number = "80" marked = "false">71.1</Data>
      <Data number = "81" marked = "false">71.1</Data>
      <Data number = "82" marked = "false">71.1</Data>
      <Data number = "83" marked = "false">71.1</Data>
      <Data number = "84" marked = "false">71.1</Data>
      <Data number = "85" marked = "false">71.1</Data>
      <Data number = "86" marked = "false">71.1</Data>
      <Data number = "87" marked = "false">71.1</Data>
      <Data number = "88" marked = "false">71.1</Data>
      <Data number = "89" marked = "false">71.1</Data>
      <Data number = "90" marked = "false">71.1</Data>
      <Data number = "91" marked = "false">71.1</Data>
      <Data number = "92" marked = "false">71.1</Data>
      <Data number = "93" marked = "false">71</Data>
      <Data number = "94" marked = "false">71.1</Data>
      <Data number = "95" marked = "false">71</Data>
      <Data number = "96" marked = "false">71</Data>
      <Data number = "97" marked = "false">71</Data>
      <Data number = "98" marked = "false">71</Data>
      <Data number = "99" marked = "false">71</Data>
      <Data number = "100" marked = "false">71</Data>
    </DataPoints>
    <TestResults index = "Sensor1">
      <Passed>true</Passed>
      <TesterName>IMI</TesterName>
      <TestTime>1/18/2023 4:57:15 AM</TestTime>
      <NistDataFileName>CH#31_1_18_2023 01_37_22</NistDataFileName>
      <ChamberStationNumber>31</ChamberStationNumber>
      <ChamberSerialNumber>936644</ChamberSerialNumber>
      <LoggerName>B3C495</LoggerName>
      <TestSetpoint number = "1">
        <MonitorSetpoint>70.6</MonitorSetpoint>
        <NistSetpoint>70.8</NistSetpoint>
        <StandardTolerance>5</StandardTolerance>
        <ResultTolerance>0.2</ResultTolerance>
        <SetpointTime>04:17:42</SetpointTime>
      </TestSetpoint>
      <TestSetpoint number = "2">
        <MonitorSetpoint>70.6</MonitorSetpoint>
        <NistSetpoint>70.8</NistSetpoint>
        <StandardTolerance>5</StandardTolerance>
        <ResultTolerance>0.2</ResultTolerance>
        <SetpointTime>04:17:42</SetpointTime>
      </TestSetpoint>
      <TestSetpoint number = "3">
        <MonitorSetpoint>70.6</MonitorSetpoint>
        <NistSetpoint>70.8</NistSetpoint>
        <StandardTolerance>5</StandardTolerance>
        <ResultTolerance>0.2</ResultTolerance>
        <SetpointTime>04:17:42</SetpointTime>
      </TestSetpoint>
    </TestResults>
    <SensorType>BIO</SensorType>
    <SensorUnit>F</SensorUnit>
    <Alarms>
      <Alarm number = "1">
        <AlarmEnabled>true</AlarmEnabled>
        <LogicEqual>false</LogicEqual>
        <AlarmType>HighTempLimitSingle</AlarmType>
        <AlarmTriggered>true</AlarmTriggered>
        <AlarmTriggerTime>1/18/2023 12:37:53 AM</AlarmTriggerTime>
        <AlarmSetpoints>
          <HiSetpoint1>41</HiSetpoint1>
          <LoSetpoint1>-22</LoSetpoint1>
          <HiSetpoint2>158</HiSetpoint2>
          <LoSetpoint2>-22</LoSetpoint2>
        </AlarmSetpoints>
        <AlarmCounter>402</AlarmCounter>
        <AlarmTimeThreshold>4</AlarmTimeThreshold>
      </Alarm>
      <Alarm number = "2">
        <AlarmEnabled>true</AlarmEnabled>
        <LogicEqual>false</LogicEqual>
        <AlarmType>LowTempLimitSingle</AlarmType>
        <AlarmTriggered>false</AlarmTriggered>
        <AlarmTriggerTime>1/1/1970 12:00:00 AM</AlarmTriggerTime>
        <AlarmSetpoints>
          <HiSetpoint1>158</HiSetpoint1>
          <LoSetpoint1>32</LoSetpoint1>
          <HiSetpoint2>158</HiSetpoint2>
          <LoSetpoint2>-22</LoSetpoint2>
        </AlarmSetpoints>
        <AlarmCounter>0</AlarmCounter>
        <AlarmTimeThreshold>4</AlarmTimeThreshold>
      </Alarm>
      <Alarm number = "3">
        <AlarmEnabled>true</AlarmEnabled>
        <LogicEqual>false</LogicEqual>
        <AlarmType>LowTempLimitSingle</AlarmType>
        <AlarmTriggered>false</AlarmTriggered>
        <AlarmTriggerTime>1/1/1970 12:00:00 AM</AlarmTriggerTime>
        <AlarmSetpoints>
          <HiSetpoint1>158</HiSetpoint1>
          <LoSetpoint1>-22</LoSetpoint1>
          <HiSetpoint2>158</HiSetpoint2>
          <LoSetpoint2>-22</LoSetpoint2>
        </AlarmSetpoints>
        <AlarmCounter>0</AlarmCounter>
        <AlarmTimeThreshold>4</AlarmTimeThreshold>
      </Alarm>
      <Alarm number = "4">
        <AlarmEnabled>true</AlarmEnabled>
        <LogicEqual>false</LogicEqual>
        <AlarmType>HighTempLimitSingle</AlarmType>
        <AlarmTriggered>false</AlarmTriggered>
        <AlarmTriggerTime>1/1/1970 12:00:00 AM</AlarmTriggerTime>
        <AlarmSetpoints>
          <HiSetpoint1>158</HiSetpoint1>
          <LoSetpoint1>-22</LoSetpoint1>
          <HiSetpoint2>158</HiSetpoint2>
          <LoSetpoint2>-22</LoSetpoint2>
        </AlarmSetpoints>
        <AlarmCounter>0</AlarmCounter>
        <AlarmTimeThreshold>4</AlarmTimeThreshold>
      </Alarm>
      <Alarm number = "5">
        <AlarmEnabled>false</AlarmEnabled>
        <LogicEqual>false</LogicEqual>
        <AlarmType>HighTempLimitSingle</AlarmType>
        <AlarmTriggered>false</AlarmTriggered>
        <AlarmTriggerTime>1/1/1970 12:00:00 AM</AlarmTriggerTime>
        <AlarmSetpoints>
          <HiSetpoint1>158</HiSetpoint1>
          <LoSetpoint1>-22</LoSetpoint1>
          <HiSetpoint2>158</HiSetpoint2>
          <LoSetpoint2>-22</LoSetpoint2>
        </AlarmSetpoints>
        <AlarmCounter>0</AlarmCounter>
        <AlarmTimeThreshold>4</AlarmTimeThreshold>
      </Alarm>
      <Alarm number = "6">
        <AlarmEnabled>false</AlarmEnabled>
        <LogicEqual>false</LogicEqual>
        <AlarmType>HighTempLimitSingle</AlarmType>
        <AlarmTriggered>false</AlarmTriggered>
        <AlarmTriggerTime>1/1/1970 12:00:00 AM</AlarmTriggerTime>
        <AlarmSetpoints>
          <HiSetpoint1>158</HiSetpoint1>
          <LoSetpoint1>-22</LoSetpoint1>
          <HiSetpoint2>158</HiSetpoint2>
          <LoSetpoint2>-22</LoSetpoint2>
        </AlarmSetpoints>
        <AlarmCounter>0</AlarmCounter>
        <AlarmTimeThreshold>4</AlarmTimeThreshold>
      </Alarm>
    </Alarms>
  </Sensor>
  <ShipmentInformation>
    <ShipmentTag number = "1">
      <TagDefID></TagDefID>
      <LOVPossibleValue></LOVPossibleValue>
      <Label></Label>
      <Value></Value>
      <FlexTagType>Shipment</FlexTagType>
    </ShipmentTag>
    <ShipmentTag number = "2">
      <TagDefID></TagDefID>
      <LOVPossibleValue></LOVPossibleValue>
      <Label></Label>
      <Value></Value>
      <FlexTagType>Shipment</FlexTagType>
    </ShipmentTag>
    <ShipmentTag number = "3">
      <TagDefID></TagDefID>
      <LOVPossibleValue></LOVPossibleValue>
      <Label></Label>
      <Value></Value>
      <FlexTagType>Shipment</FlexTagType>
    </ShipmentTag>
    <ShipmentTag number = "4">
      <TagDefID></TagDefID>
      <LOVPossibleValue></LOVPossibleValue>
      <Label></Label>
      <Value></Value>
      <FlexTagType>Shipment</FlexTagType>
    </ShipmentTag>
    <ShipmentTag number = "5">
      <TagDefID></TagDefID>
      <LOVPossibleValue></LOVPossibleValue>
      <Label></Label>
      <Value></Value>
      <FlexTagType>Shipment</FlexTagType>
    </ShipmentTag>
    <ShipmentTag number = "6">
      <TagDefID></TagDefID>
      <LOVPossibleValue></LOVPossibleValue>
      <Label></Label>
      <Value></Value>
      <FlexTagType>Shipment</FlexTagType>
    </ShipmentTag>
    <ShipmentTag number = "7">
      <TagDefID></TagDefID>
      <LOVPossibleValue></LOVPossibleValue>
      <Label></Label>
      <Value></Value>
      <FlexTagType>Shipment</FlexTagType>
    </ShipmentTag>
    <ShipmentTag number = "8">
      <TagDefID></TagDefID>
      <LOVPossibleValue></LOVPossibleValue>
      <Label></Label>
      <Value></Value>
      <FlexTagType>Shipment</FlexTagType>
    </ShipmentTag>
    <ShipmentTag number = "9">
      <TagDefID></TagDefID>
      <LOVPossibleValue></LOVPossibleValue>
      <Label></Label>
      <Value></Value>
      <FlexTagType>Shipment</FlexTagType>
    </ShipmentTag>
    <ShipmentTag number = "10">
      <TagDefID></TagDefID>
      <LOVPossibleValue></LOVPossibleValue>
      <Label></Label>
      <Value></Value>
      <FlexTagType>Shipment</FlexTagType>
    </ShipmentTag>
  </ShipmentInformation>
  <LocalInfo>
    <TimeZone>Central Europe Standard Time</TimeZone>
    <UtcOffsetMinutes>60</UtcOffsetMinutes>
    <UserName>imi</UserName>
    <Culture>en-US</Culture>
  </LocalInfo>
  <AssemblyInfo>
    <AssemblyName>Sensitech.Devices</AssemblyName>
    <AssemblyVersion>2.3.0.0</AssemblyVersion>
    <ClassName>TTUltra</ClassName>
    <FileVersion>1.0</FileVersion>
  </AssemblyInfo>
  <AdditionalAssemblyInfo>
    <Station>SENSI-27</Station>
    <AssemblyName>TurboValidate Plus</AssemblyName>
    <AssemblyVersion>2.5.2207.802</AssemblyVersion>
  </AdditionalAssemblyInfo>
  <Signature xmlns = "http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod Algorithm = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
      <SignatureMethod Algorithm = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
      <Reference URI = "">
        <Transforms>
          <Transform Algorithm = "http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
        </Transforms>
        <DigestMethod Algorithm = "http://www.w3.org/2001/04/xmlenc#sha256" />
        <DigestValue>L6z3IVi0JHgIsyy68K1aEkyTqTPf4hf1r3nmvNZsLEc=</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>Iwhh0FJTfiACl2nbpOjmHUnawOxQ8Zd+B89EX1FD0xFNxZrT9eN7WQ3J7BfxhJXrek7ejlhWNI3FU6AGp0y5EU3P2e+crYSgd3xNzkB3KMeH0W5owElGMYNAjfqWrWZybo3Bz67JQ116dDex8EpoMU/3rtEM/7Hl8i1NTI9hBvU=</SignatureValue>
  </Signature>
</Data>

Мой вопрос: мне нужно взять значение, которое находится между тегами <TestResults index="Sensor1">, то есть ( <Passed>true</Passed>). Я пробовал много вещей, но мне не удалось это сделать это, и мне нужен только результат теста, если он пройден или не пройден. Спасибо!

так как я могу взять это значение и поместить его в переменную?

Большое спасибо!!

Я вижу тег <Passed> только один раз во всем вашем файле, так что не так с использованием утилиты find.exe? @%SystemRoot%\System32\find.exe /I "<Passed>true" 0<"Y:\our\Directory\File.xml" 1>NUL && (Echo Passed) || Echo Failed

Compo 26.01.2023 15:10

Что именно вы подразумеваете под «выделением этой строки жирным шрифтом (<Passed>true</Passed>)»? Можете ли вы отредактировать свой вопрос и добавить точный ожидаемый результат?

Jack Fleeting 26.01.2023 15:31

Привет извините за путаницу. У меня есть несколько XML-файлов, и я хочу знать, какой файл XML-файла имеет пройденные результаты теста, а какой не прошел.

Cristine 26.01.2023 16:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

@ECHO OFF
SETLOCAL
rem The following settings for the source directory and filename are names
rem that I use for testing and deliberately include names which include spaces to make sure
rem that the process works using such names. These will need to be changed to suit your situation.

SET "sourcedir=u:\your files"
SET "filename1=%sourcedir%\xmldata.xml"
SET "index = "

FOR /f "usebackqtokens=1,2delims=<> " %%g IN ("%filename1%") DO (
 IF DEFINED index IF "%%g"= = "Passed" SET "passed=%%h"
 IF DEFINED index GOTO done
 IF "%%g"= = "TestResults" SET %%h
)

:done
IF DEFINED passed (ECHO FOR %index% - %passed%) ELSE (ECHO NOT found)

GOTO :EOF

Всегда сверяйтесь с тестовым каталогом перед применением к реальным данным.

Обратите внимание, что если имя файла не содержит разделителей, таких как пробелы, то и usebackq, и кавычки вокруг %filename1% можно опустить.

Прочитайте файл, размечая каждую строку, используя <>Space в качестве разделителей. Выберите первые 2 жетона для %%g и %%h.

Если первым токеном является «Testresults», выполните set %%h. %%h будет index = "something", поэтому переменная index будет установлена ​​на "something".

Прочитайте следующую строку. Если установлено index и первый токен равен Passed, то установите passed на второй токен и выйдите.

Если index был установлен, но первый токен в следующей строке не Passed, то выход (предполагаемое состояние ошибки)

Сообщить о результатах.

Благодарить. Я сохраню это как ссылку.

Cristine 27.01.2023 12:17
Ответ принят как подходящий

Если во всех файлах всего одна строка <Passed>true|false</Passed>, то решение очень простое:

@echo off
for %%f in (*.xml) do for /F "tokens=3 delims=<>" %%a in ('findstr "Passed" "%%f"') do echo %%f: %%a

Если строк Passed несколько и вам нужна та, что после <TestResults index = "Sensor1">, используйте этот метод:

@echo off
setlocal

rem Process all *.xml files
for %%f in (*.xml) do (

   rem Get the line number of "TestResults index=Sensor1"
   for /F "delims=:" %%i in ('findstr /N /C:"TestResults index=\"Sensor1\"" "%%f"') do (

      rem Show the result from first "Passed" line after "TestResults"
      set "first = "
      for /F "delims=:<> tokens=1,4" %%a in ('findstr /N "Passed" "%%f"') do (
         if not defined first  if %%a gtr %%i (
            echo %%f: %%b
            set "first=True"
         )
      )

   )
)

Возможно ли также, что данные, которые будут захвачены как истинные или ложные с помощью приведенного выше сценария, будут в одном списке, который я могу просмотреть в любое время?

Cristine 27.01.2023 12:23

Если вы выполняете пакетный файл таким образом: theBatch.bat > result.txt результат сохраняется в result.txt файле, который вы можете просмотреть в любое время.

Aacini 28.01.2023 01:13

Привет, Аачини, я выполнил это предложенным вами способом, но результат txt пуст, когда я его открываю.

Cristine 30.01.2023 09:16

Форма theBatch.bat > result.txt хранит в result.txt файле точно такой же вывод, который theBatch.bat файл показывает на экране. Итак, покажите theBatch.bat файл только тот результат, который вы хотите вывести на экран?

Aacini 31.01.2023 02:19

Это работает в сочетании с вашим скриптом выше. @echo off если существует report.txt стереть report.txt

Cristine 31.01.2023 12:52

Извините, я не слежу за вами... :(

Aacini 31.01.2023 16:42

Я имею в виду, что это работает сейчас. :) Большое спасибо.

Cristine 01.02.2023 17:03

Другие вопросы по теме