Automatic menu creation for BATCH files

2019-08-23 09:16发布

I have a batch file that I use to install windows. It gives you a series of menus to navigate to get to the final WIM image number. It then uses imagex to apply the image to the specified drive letter. I want to make the menu dynamic so it only shows entries based what is in the WIM file. I currently have a WIM file that has every edition of windows from vista to server 2012. I am wanting to strip some the images out so it is more streamlined but I don't want to rebuild the installer because it is a pain in the butt. I would like some help

One thing I thought of but I don't know how to implement is that it reads the image name and makes the menu for it in its respected place.

How do I make the Menu Dynamic?

For any other tips or hints please go to

https://github.com/elliot-labs/WinInstaller

Here is the current install batch file:

:start
@echo off
cls
cd /d %~dp0

rem Sets up the working directory.




goto Menu





:Menu
cls
set selection=
cls
echo 1. Windows Server
echo 2. Windows Client
set /p selection=Please chose which OS type you want [1 or 2]:
if %selection% EQU 1 goto Server
if %selection% EQU 2 goto Client


:Server
cls
set selection=
echo 1. Server 2008 (x86)
echo 2. Server 2012 (x64)
set /p selection=Please chose which OS you want [1 or 2]:
if %selection% EQU 1 goto 2008
if %selection% EQU 2 goto 2012


:Client
cls
set selection=
echo 1. Windows 8
echo 2. Windows 7
echo 3. Windows Vista
set /p selection=Please chose which OS you want [1, 2 or 3]:
if %selection% EQU 1 goto 8
if %selection% EQU 2 goto 7
if %selection% EQU 3 goto Vista



:2008
cls
set selection=
echo 1. Server Standard
echo 2. Server Enterprise
echo 3. Server Data Center
echo 4. Server Standard Core (no GUI)
echo 5. Server Enterprise Core (no GUI)
echo 6. Server Data Center (no GUI)
set /p selection=Please chose which OS type you want [1-6]:
if %selection% EQU 1 goto i19
if %selection% EQU 2 goto i18
if %selection% EQU 3 goto i17
if %selection% EQU 4 goto i16
if %selection% EQU 5 goto i15
if %selection% EQU 6 goto i14

:2012
cls
set selection=
echo All are 64 bit (x64)
echo 1. Server Standard Core (no GUI)
echo 2. Server Standard
echo 3. Server Data Center Core (no GUI)
echo 4. Server Data Center
set /p selection=Please chose which OS type you want [1-4]:
if %selection% EQU 1 goto i23
if %selection% EQU 2 goto i22
if %selection% EQU 3 goto i21
if %selection% EQU 4 goto i20



:8
cls
set selection=
echo 1. Windows 8 x86
echo 2. Windows 8 Pro x86
echo 3. Windows 8 x64
echo 4. Windows 8 Pro x64
set /p selection=Please chose which OS type you want [1-4]:
if %selection% EQU 1 goto i10
if %selection% EQU 2 goto i11
if %selection% EQU 3 goto i12
if %selection% EQU 4 goto i13


:7
cls
set selection=
echo 1. Windows 7 Starter x86
echo 2. Windows 7 Home Basic x86
echo 3. Windows 7 Home Premium x86
echo 4. Windows 7 Professional x86
echo 5. Windows 7 Ultimate x86
echo 6. Windows 7 Home Basic x64
echo 7. Windows 7 Home Premium x64
echo 8. Windows 7 Professional x64
echo 9. Windows 7 Ultimate x64
set /p selection=Please chose which OS type you want [1-9]:
if %selection% EQU 1 goto i5
if %selection% EQU 2 goto i4
if %selection% EQU 3 goto i3
if %selection% EQU 4 goto i2
if %selection% EQU 5 goto i1
if %selection% EQU 6 goto i9
if %selection% EQU 7 goto i8
if %selection% EQU 8 goto i7
if %selection% EQU 9 goto i6

:Vista
cls
set selection=
echo 1.  Windows Vista Starter x86
echo 2.  Windows Vista Business N x86
echo 3.  Windows Vista Home Basic N x86
echo 4.  Windows Vista Ultimate x86
echo 5.  Windows Vista Home Premium x86
echo 6.  Windows Vista Home Basic x86
echo 7.  Windows Vista Business x86
echo 8.  Windows Vista Ultiamte x64
echo 9.  Windows Vista Home Premium x64
echo 10. Windows Vista Home Basic x64
echo 11. Windows Vista Vista Business x64
set /p selection=Please chose which OS type you want [1-11]:
if %selection% EQU 1 goto i24
if %selection% EQU 2 goto i25
if %selection% EQU 3 goto i26
if %selection% EQU 4 goto i27
if %selection% EQU 5 goto i28
if %selection% EQU 6 goto i29
if %selection% EQU 7 goto i30
if %selection% EQU 8 goto i31
if %selection% EQU 9 goto i32
if %selection% EQU 10 goto i33
if %selection% EQU 11 goto i34




:i1
set index=1
goto dest
:i2
set index=2
goto dest
:i3
set index=3
goto dest
:i4
set index=4
goto dest
:i5
set index=5
goto dest
:i6
set index=6
goto dest
:i7
set index=7
goto dest
:i8
set index=8
goto dest
:i9
set index=9
goto dest
:i10
set index=10
goto dest
:i11
set index=11
goto dest
:i12
set index=12
goto dest
:i13
set index=13
goto dest
:i14
set index=14
goto dest
:i15
set index=15
goto dest
:i16
set index=16
goto dest
:i17
set index=17
goto dest
:i18
set index=18
goto dest
:i19
set index=19
goto dest
:i20
set index=20
goto dest
:i21
set index=21
goto dest
:i22
set index=22
goto dest
:i23
set index=23
goto dest
:i24
set index=24
goto dest
:i25
set index=25
goto dest
:i26
set index=26
goto dest
:i27
set index=27
goto dest
:i28
set index=28
goto dest
:i29
set index=29
goto dest
:i30
set index=30
goto dest
:i31
set index=31
goto dest
:i32
set index=32
goto dest
:i33
set index=33
goto dest
:i34
set index=34
goto dest



:install
imagex /apply Y:\WIMs\install.wim %index% %dest%:
pause
goto Boot




:dest
cls
echo Please enter the drive letter you want to install to.
set /p dest=Please chose which letter you want [A-Z]:
goto install




:Boot
cls
echo This will run EasyBCD from which you can install the Boot loader.
pause
Y:\Programs\EasyBCD\EasyBCD.exe
cls
echo Instalation complete!
pause

Output from imagex from Windows 7 SP1 x86 install dvd install.wim:

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

WIM Information:
----------------
Path:        B:\install.wim
GUID:        {03825cb3-3e7f-4798-81f4-9ca6ef277819}
Image Count: 5
Compression: LZX
Part Number: 1/1
Attributes:  0xc
             Integrity info
             Relative path junction


Available Image Choices:
------------------------
<WIM>
  <TOTALBYTES>2249000978</TOTALBYTES>
  <IMAGE INDEX="1">
    <DIRCOUNT>9107</DIRCOUNT>
    <FILECOUNT>46905</FILECOUNT>
    <TOTALBYTES>8074968070</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CB8901</HIGHPART>
      <LOWPART>0xEF63352E</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CBF8BC</HIGHPART>
      <LOWPART>0xBB84D710</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>0</ARCH>
      <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
      <EDITIONID>Starter</EDITIONID>
      <INSTALLATIONTYPE>Client</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>17514</SPBUILD>
        <SPLEVEL>1</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 STARTER</NAME>
    <DESCRIPTION>Windows 7 STARTER</DESCRIPTION>
    <FLAGS>Starter</FLAGS>
    <HARDLINKBYTES>3037806302</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Starter</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Starter</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="2">
    <DIRCOUNT>9140</DIRCOUNT>
    <FILECOUNT>47108</FILECOUNT>
    <TOTALBYTES>8127590116</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CB8901</HIGHPART>
      <LOWPART>0xEF63352E</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CBF8BC</HIGHPART>
      <LOWPART>0xD91B65FA</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>0</ARCH>
      <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
      <EDITIONID>HomeBasic</EDITIONID>
      <INSTALLATIONTYPE>Client</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>17514</SPBUILD>
        <SPLEVEL>1</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 HOMEBASIC</NAME>
    <DESCRIPTION>Windows 7 HOMEBASIC</DESCRIPTION>
    <FLAGS>HomeBasic</FLAGS>
    <HARDLINKBYTES>3069177344</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Home Basic</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Home Basic</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="3">
    <DIRCOUNT>9357</DIRCOUNT>
    <FILECOUNT>48117</FILECOUNT>
    <TOTALBYTES>8569006173</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CB8901</HIGHPART>
      <LOWPART>0xEF63352E</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CBF8BC</HIGHPART>
      <LOWPART>0xF5B79DFA</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>0</ARCH>
      <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
      <EDITIONID>HomePremium</EDITIONID>
      <INSTALLATIONTYPE>Client</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>17514</SPBUILD>
        <SPLEVEL>1</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 HOMEPREMIUM</NAME>
    <DESCRIPTION>Windows 7 HOMEPREMIUM</DESCRIPTION>
    <FLAGS>HomePremium</FLAGS>
    <HARDLINKBYTES>3448347246</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Home Premium</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Home Premium</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="4">
    <DIRCOUNT>9414</DIRCOUNT>
    <FILECOUNT>48560</FILECOUNT>
    <TOTALBYTES>8450188760</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CB8901</HIGHPART>
      <LOWPART>0xEF63352E</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CBF8BD</HIGHPART>
      <LOWPART>0x0FC1CCF2</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>0</ARCH>
      <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
      <EDITIONID>Professional</EDITIONID>
      <INSTALLATIONTYPE>Client</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>17514</SPBUILD>
        <SPLEVEL>1</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 PROFESSIONAL</NAME>
    <DESCRIPTION>Windows 7 PROFESSIONAL</DESCRIPTION>
    <FLAGS>Professional</FLAGS>
    <HARDLINKBYTES>3314667745</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Professional</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Professional</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="5">
    <DIRCOUNT>9450</DIRCOUNT>
    <FILECOUNT>48736</FILECOUNT>
    <TOTALBYTES>8610128720</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CB8901</HIGHPART>
      <LOWPART>0xEF63352E</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CBF8BD</HIGHPART>
      <LOWPART>0x20960638</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>0</ARCH>
      <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
      <EDITIONID>Ultimate</EDITIONID>
      <INSTALLATIONTYPE>Client</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>17514</SPBUILD>
        <SPLEVEL>1</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 ULTIMATE</NAME>
    <DESCRIPTION>Windows 7 ULTIMATE</DESCRIPTION>
    <FLAGS>Ultimate</FLAGS>
    <HARDLINKBYTES>3473147759</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Ultimate</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Ultimate</DISPLAYDESCRIPTION>
  </IMAGE>
</WIM>

Below is the same command (imagex /info) on a Windows 7 SP1 x64 WIM

B:\AIO>imagex /info B:\install.wim

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

WIM Information:
----------------
Path:        B:\install.wim
GUID:        {65caf905-5e50-4a42-900b-5e14084871e9}
Image Count: 4
Compression: LZX
Part Number: 1/1
Attributes:  0xc
             Integrity info
             Relative path junction


Available Image Choices:
------------------------
<WIM>
  <TOTALBYTES>2954387497</TOTALBYTES>
  <IMAGE INDEX="1">
    <DIRCOUNT>13365</DIRCOUNT>
    <FILECOUNT>64285</FILECOUNT>
    <TOTALBYTES>11710161360</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CB8936</HIGHPART>
      <LOWPART>0x131F339A</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CBF8F0</HIGHPART>
      <LOWPART>0x0027D0DC</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>9</ARCH>
      <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
      <EDITIONID>HomeBasic</EDITIONID>
      <INSTALLATIONTYPE>Client</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>17514</SPBUILD>
        <SPLEVEL>1</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 HOMEBASIC</NAME>
    <DESCRIPTION>Windows 7 HOMEBASIC</DESCRIPTION>
    <FLAGS>HomeBasic</FLAGS>
    <HARDLINKBYTES>4497873056</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Home Basic</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Home Basic</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="2">
    <DIRCOUNT>13614</DIRCOUNT>
    <FILECOUNT>65339</FILECOUNT>
    <TOTALBYTES>12222587449</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CB8936</HIGHPART>
      <LOWPART>0x131F339A</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CBF8F0</HIGHPART>
      <LOWPART>0x236D21C7</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>9</ARCH>
      <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
      <EDITIONID>HomePremium</EDITIONID>
      <INSTALLATIONTYPE>Client</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>17514</SPBUILD>
        <SPLEVEL>1</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 HOMEPREMIUM</NAME>
    <DESCRIPTION>Windows 7 HOMEPREMIUM</DESCRIPTION>
    <FLAGS>HomePremium</FLAGS>
    <HARDLINKBYTES>4912986404</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Home Premium</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Home Premium</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="3">
    <DIRCOUNT>13701</DIRCOUNT>
    <FILECOUNT>65851</FILECOUNT>
    <TOTALBYTES>12122886417</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CB8936</HIGHPART>
      <LOWPART>0x131F339A</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CBF8F0</HIGHPART>
      <LOWPART>0x47C4A445</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>9</ARCH>
      <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
      <EDITIONID>Professional</EDITIONID>
      <INSTALLATIONTYPE>Client</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>17514</SPBUILD>
        <SPLEVEL>1</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 PROFESSIONAL</NAME>
    <DESCRIPTION>Windows 7 PROFESSIONAL</DESCRIPTION>
    <FLAGS>Professional</FLAGS>
    <HARDLINKBYTES>4786527097</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Professional</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Professional</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="4">
    <DIRCOUNT>13737</DIRCOUNT>
    <FILECOUNT>66029</FILECOUNT>
    <TOTALBYTES>12285492779</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CB8936</HIGHPART>
      <LOWPART>0x131F339A</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CBF8F0</HIGHPART>
      <LOWPART>0x6D7F6938</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>9</ARCH>
      <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
      <EDITIONID>Ultimate</EDITIONID>
      <INSTALLATIONTYPE>Client</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>17514</SPBUILD>
        <SPLEVEL>1</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 ULTIMATE</NAME>
    <DESCRIPTION>Windows 7 ULTIMATE</DESCRIPTION>
    <FLAGS>Ultimate</FLAGS>
    <HARDLINKBYTES>4947144081</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Ultimate</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Ultimate</DISPLAYDESCRIPTION>
  </IMAGE>
</WIM>

Imagex is from the official Microsoft "Automated Installation Kit" for Windows 7

2条回答
混吃等死
2楼-- · 2019-08-23 09:31

Your question inspired me...

@ECHO OFF
REM Below section is not to be executed, is just database, so it is commented.
REM It is beginning with "REM D;" because batch code will scan itself
REM and identify "REM D" as database entries (as well as "REM DE" as database end).
REM Database entries (format "REM D";Title;(m)enu/(d)isk;target;parent)
REM D;Windows Client;m;Client
REM D;Windows Server;m;Server
REM D;Server Data Center (no GUI);d;14;2008
REM D;Server Enterprise Core (no GUI);d;15;2008
REM D;Server Standard Core (no GUI);d;16;2008
REM D;Server Data Center;d;17;2008
REM D;Server Enterprise;d;18;2008
REM D;Server Standard;d;19;2008
REM D;Server Data Center;d;20;2012
REM D;Server Data Center Core (no GUI);d;21;2012
REM D;Server Standard;d;22;2012
REM D;Server Standard Core (no GUI);d;23;2012
REM D;Windows 7 Ultimate x86;d;1;7
REM D;Windows 7 Professional x86;d;2;7
REM D;Windows 7 Home Premium x86;d;3;7
REM D;Windows 7 Home Basic x86;d;4;7
REM D;Windows 7 Starter x86;d;5;7
REM D;Windows 7 Ultimate x64;d;6;7
REM D;Windows 7 Professional x64;d;7;7
REM D;Windows 7 Home Premium x64;d;8;7
REM D;Windows 7 Home Basic x64;d;9;7
REM D;Windows 8 x86;d;10;8
REM D;Windows 8 Pro x86;d;11;8
REM D;Windows 8 x64;d;12;8
REM D;Windows 8 Pro x64;d;13;8
REM D;Windows 7;m;7;Client
REM D;Windows 8;m;8;Client
REM D;Windows Vista;m;Vista;Client
REM D;Server 2008 (x86);m;2008;Server
REM D;Server 2012 (x64);m;2012;Server
REM DE;This is (D)ata (E)nd, used to stop iterations

REM SETLOCAL used to enable delayed expansion, so !Index! may be used.
SETLOCAL ENABLEDELAYEDEXPANSION
CALL :Menu
IF NOT DEFINED Disk GOTO :EOF
REM From here, %Disk% contains desired disk number.
ECHO %Disk% & PAUSE
SET /P "Drive=Enter drive letter [A-Z]: "
imagex /apply Y:\WIMs\install.wim %Disk% %Drive%:
PAUSE
CLS
ECHO This will install EasyBCD from which you can install the Bootloader.
PAUSE
Y:\Programs\EasyBCD\EasyBCD.exe
CLS
ECHO Instalation complete!
PAUSE
GOTO :EOF

REM :Menu shows options based on parent level and ask user.
REM Note that first database entries have not parent data
:Menu [%1=Parent]
SET Disk=
CALL :ShowMenu %1

:MenuPrompt
ECHO.
SET /P "Index=Option: "
SET /A Index*=1
IF %Index% GTR 0 IF %Index% LEQ %Count% (
    FOR /F "TOKENS=1-5 DELIMS=;" %%i IN (%~fs0) DO IF /I "%%i"=="REM D" IF /I "%%m"=="%1" (
        SET /A Index-=1
        IF !Index!==0 (
            echo %%k
            IF /I "%%k"=="m" CALL :Menu %%l & GOTO :EOF
            IF /I "%%k"=="d" SET "Disk=%%l"& GOTO :EOF
            ECHO Database broken: m or d expected!1>&2
            GOTO :EOF
        )
    )
    GOTO :EOF
)
ECHO Invalid option!
GOTO :MenuPrompt

:ShowMenu [%1=Parent]
CLS
SET Count=0
FOR /F "TOKENS=1-5 DELIMS=;" %%i IN (%~fs0) DO (
    IF /I "%%i"=="REM D" IF /I "%%m"=="%1" (
        SET /A Count+=1
        ECHO [!Count!] %%j
    ) ELSE IF /I "%%i"=="REM DE" GOTO :EOF
)
GOTO :EOF
查看更多
混吃等死
3楼-- · 2019-08-23 09:36

I have looked every where and then some... I have finally gotten the batch file to be a dynamic system.

Here is the code:

:start
@echo off
cls
cd /d %~dp0
goto setwiminfo

rem Sets up the working directory. (Inportant to do this)

:setwiminfo
cls
echo Please enter the full path to the
set /p WIM=WIM file of your choice:
cls
echo Path set.
pause
imagex /info "%WIM%" | find "<NAME>" >> Images.txt
goto dest

rem Sets where the WIM is located and also makes the list of images avalable in the wim.

:dest
cls
echo Where would you like to install the image?
set /p dest=Enter the drive letter here [A-Z]:
goto index

rem This sets the destination that the image is to be applied to. (Cool tip: you can apply to a directory E.G. X:\dir\)
rem The cool tip is usually used for devolapement.

:index
echo :start >> Display.bat
echo @echo off >> Display.bat
echo cls >> Display.bat
echo cd /d "%~dp0" >> Display.bat
echo echo List of images avalable for instalation: >> Display.bat
echo echo *Note the image number on the left of the name* >> Display.bat
echo find /N "<NAME>" Images.txt >> Display.bat
echo pause >> Display.bat
echo del Images.txt >> Display.bat
echo exit >> Display.bat
start Display.bat
cls
set /p index=Please inter the number of the image (name) you want to install:
goto install 

rem This makes another batch file that displays the index information in a new window.

:install
echo this will install the wim to the destination you selected.
pause
cls
imagex /apply "%WIM%" %index% "%dest%":
goto boot

rem Applies the image to the selected drive (or folder if you chose).

:boot
echo EasyBCD is starting from which you can install the boot loader.
Y:\Programs\EasyBCD\EasyBCD.exe
pause
goto cleanup

rem This runs EasyBCD because I havn't integrated bcdboot commands yet... (coming soon)

:cleanup
del Display.bat
del Images.txt
goto choice

rem This cleans up files created by the script.

:choice
cls
echo do you want to install another image?
choice
if %ERRORLEVEL% EQU 1 goto start
if %ERRORLEVEL% EQU 2 goto end
echo Error please try again :(
pause
goto choice

rem This loops the script if the user want's to apply another image.

:end
cls
echo Thank you for using Elliot Labs installer!
echo For feature requests please email elliot-labs@live.com
echo Thank you!
pause | echo Press any key to exit...
exit
查看更多
登录 后发表回答