2015-07-13 3 views
0

У меня есть папка с несколькими файлами ImageX (* .wim). Я могу петлю через тех, и выбрать один из них с помощью следующего пакетного файла:Пакетный файл Windows с использованием ImageX info

@echo off 
setlocal enabledelayedexpansion 
for %%a in (*.wim) do (
    set /a gt_i+=1 
    echo !gt_i! - %%~nxa 
    set gt_files[!gt_i!]=%%~fa 
) 
set /p m0="Select file: " 
REM Do imagex applying of selected image here 

Это работает просто отлично, но я хотел бы что-то покрасивее, чем просто имена файлов.

ImageX имеет опцию «/ данные», который отображает различные метаданные изображения в следующем формате:

C:\>imagex /info myfile.wim 1 

ImageX Tool for Windows 
Copyright (C) Microsoft Corp. All rights reserved. 
Version: 6.1.7600.16385 

Image Information: 
------------------ 
<IMAGE INDEX="1"> 
    <DIRCOUNT>10817</DIRCOUNT> 
    <FILECOUNT>57345</FILECOUNT> 
    <TOTALBYTES>10790852647</TOTALBYTES> 
    <HARDLINKBYTES>3603810948</HARDLINKBYTES> 
    <CREATIONTIME> 
    <HIGHPART>0x01CF15CB</HIGHPART> 
    <LOWPART>0xF1871990</LOWPART> 
    </CREATIONTIME> 
    <LASTMODIFICATIONTIME> 
    <HIGHPART>0x01CF3C5B</HIGHPART> 
    <LOWPART>0x32F96B0C</LOWPART> 
    </LASTMODIFICATIONTIME> 
    <WINDOWS> 
    <ARCH>0</ARCH> 
    <PRODUCTNAME>Microsoft® Windows® Operating System</PRODUCTNAME> 
    <EDITIONID>Embedded</EDITIONID> 
    <INSTALLATIONTYPE>Embedded</INSTALLATIONTYPE> 
    <HAL>acpiapic</HAL> 
    <PRODUCTTYPE>WinNT</PRODUCTTYPE> 
    <PRODUCTSUITE>Terminal Server</PRODUCTSUITE> 
    <LANGUAGES> 
     <LANGUAGE>en-US</LANGUAGE> 
     <DEFAULT>en-US</DEFAULT> 
    </LANGUAGES> 
    <VERSION> 
     <MAJOR>6</MAJOR> 
     <MINOR>1</MINOR> 
     <BUILD>7601</BUILD> 
     <SPBUILD>17965</SPBUILD> 
     <SPLEVEL>1</SPLEVEL> 
    </VERSION> 
    <SYSTEMROOT>WINDOWS</SYSTEMROOT> 
    </WINDOWS> 
    <NAME>My custom image name set during creation</NAME> 
</IMAGE> 

Как я могу использовать <NAME> тег в этой информации от ImageX вместо имени файла в цикл for в скрипте?

Это почти тот же вопрос, как this one, но я не могу найти правильное решение этой конкретной проблемы в ней (другой, что я могу использовать imagex /info myfile.wim | find "<NAME>" но включает в себя ведущие пробелы, а также фактические теги XML)

ответ

1

Использование for /f:

@echo off 
setlocal enabledelayedexpansion 
for %%a in (*.wim) do (
    set /a gt_i+=1 
    for /f "delims=<> tokens=3" %%b in ('imagex /info %%~nxa ^| find "<NAME>"') do set name=%%b 
    echo !gt_i! - %%~nxa - !name! 
    set gt_files[!gt_i!]=%%~fa 
) 
set /p m0="Select file: " 
REM Do imagex applying of selected image here 
+0

Высокий. Благодаря! :) – GTHvidsten

Смежные вопросы