Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- @rem This script is called by x:WindowsSystem32Startnet.cmd - WinPE
- @echo.
- @echo.
- @echo.
- @echo.
- @echo Running Intel Optimization powercfg for improved imaging times
- @echo.
- @echo call powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
- call powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
- @echo.
- @echo.
- @echo.
- @rem *****************************************************************
- @rem List all the disks, then search the volumes of each one to see
- @rem which disks may have "Winpe" in the label. We will ignore that
- @rem disk and use the first disk without the Winpe label that we find.
- @rem *****************************************************************
- @echo.>x:Listdisk.txt
- @echo list disk>>x:Listdisk.txt
- @echo exit>>x:Listdisk.txt
- @echo call diskpart /s x:Listdisk.txt
- call diskpart /s x:Listdisk.txt>x:Disks.txt
- @echo.
- @rem Set Disk equal to blank to start
- set disk=
- @echo.
- @rem
- @rem This line will write a diskpart script to select the disk and detail it's contents.
- @rem We use this output to find a disk that does NOT have Winpe as the volume label.
- @rem That disk will have the OS installed to it. This way you can exclude USB from diskpart.
- @rem
- @rem This works around the issue where the USB key is sometimes enumerated as disk 0 and the
- @rem SSD is disk 1.
- @rem
- for /f "skip=8 tokens=2" %%A in (x:Disks.txt) do (
- @echo sel disk %%A>x:Par.txt
- @echo det disk>>x:Par.txt
- @echo exit>>x:Par.txt
- if NOT "%%A"=="DiskPart..." call :ListPar %%A
- )
- if %Disk%=="" echo No disk found without a volume label of "Winpe"&& set disk=0
- @echo Using Disk "%Disk%"
- @echo.
- @echo *****************************************************************
- @rem Map drive letter for Install.wim and Winre.wim
- @echo *****************************************************************
- @rem Create an output file containing all the drive letters
- @echo.>x:listVol.txt
- @echo list volume>>x:listVol.txt
- @echo exit>>x:listVol.txt
- @echo call diskpart /s x:listVol.txt
- call diskpart /s x:Listdisk.txt>x:Output.txt
- @echo call diskpart /s x:listVol.txt>x:Output.txt
- diskpart /s x:listVol.txt>x:Output.txt
- @echo.
- @rem Go through each drive letter, looking for the imagesInstall.txt file
- for /f "skip=8 tokens=3" %%A in (x:Output.txt) do (
- if exist %%A:imagesinstall.txt set InstallPath=%%A:images&& echo "Found device with images folder and install.txt file"
- )
- @echo.
- @echo.
- @echo.
- @echo.
- @rem ************************
- @rem UEFI SECTION
- @rem ************************
- @echo The PC is booted in UEFI mode
- @echo.>x:winpart.txt
- @echo select disk "%Disk%">>x:winpart.txt
- @echo clean>>x:winpart.txt
- @echo convert gpt>>x:winpart.txt
- @echo create partition efi size=100>>x:winpart.txt
- @echo format quick fs=fat32 label="System">>x:winpart.txt
- @echo assign letter="S">>x:winpart.txt
- @echo create partition msr size=16>>x:winpart.txt
- @echo create partition primary>>x:winpart.txt
- @echo format quick fs=ntfs label="Windows">>x:winpart.txt
- @echo assign letter="W">>x:winpart.txt
- @echo shrink desired=450>>x:winpart.txt
- @echo create partition primary>>x:winpart.txt
- @echo format quick fs=ntfs label="Recovery">>x:winpart.txt
- @echo assign letter="R">>x:winpart.txt
- @echo set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac">>x:winpart.txt
- @echo gpt attributes=0x8000000000000001>>x:winpart.txt
- @echo exit>>x:WinPart.txt
- @echo Winpart.txt now contains.....
- @echo.
- type x:winpart.txt
- @echo.
- @echo.
- @echo *****************************************************************
- @echo Setting up the partition table
- @echo *****************************************************************
- @echo call diskpart /s x:winpart.txt
- diskpart /s x:winpart.txt
- @echo.
- @echo.
- @echo.
- @echo.
- @rem Check InstallPath was found and there are images in it.
- if NOT EXIST %InstallPath%Install.swm echo "Install.swm Hassen Test NOT found." && goto :Error
- @echo Install.swm FOUND at %InstallPath%install.swm
- @echo.
- @echo.
- @echo.
- @echo *****************************************************************
- @rem Switches to the USB disk
- @rem Create folders on local (eMMC) disk and copy files from USB disk
- @echo *****************************************************************
- @echo.
- @echo Making directories...
- md w:recyclerscratch
- if %errorlevel% NEQ 0 echo "Failed to make w:recyclerscratch directory" && goto :error
- @echo.
- md r:recoverywindowsre
- if %errorlevel% NEQ 0 echo "Failed to make m:recoverywindowsre directory" && goto :error
- @echo.
- @echo.
- @echo *****************************************************************
- @echo Applying the Windows image from the USB
- @echo *****************************************************************
- @echo call dism /apply-image /imagefile:"%InstallPath%Install.swm" /swmfile:"%InstallPath%install*.swm" /index:1 /applydir:w: /compact /scratchdir:"w:recyclerSCRATCH
- call dism /apply-image /imagefile:"%InstallPath%Install.swm" /swmfile:"%InstallPath%install*.swm" /index:1 /applydir:w: /compact /scratchdir:"w:recyclerSCRATCH
- if %errorlevel% NEQ 0 echo "Failed to apply image to w:" && goto :error
- call dism.exe /Apply-CustomDataImage /CustomDataImage:"w:RecoveryCustomizationsusmt.ppkg" /ImagePath:w: /SingleInstance
- if %errorlevel% NEQ 0 echo "Failed to apply image to w:" && goto :error
- @echo.
- @echo *****************************************************************
- @rem Move WinRE to Recovery Partition
- @echo *****************************************************************
- @echo.
- @echo copy %InstallPath%RecoveryWinre.wim" "r:recoverywindowsre
- copy "%InstallPath%RecoveryWinre.wim" "r:recoverywindowsre"
- if %errorlevel% NEQ 0 echo "Failed to copy winre.wim to r:recoverywindowsre" && goto :error
- @echo.
- @echo reset attributes now
- attrib r:RecoveryWindowsrewinre.wim +s +h +a +r
- @echo.
- @echo.
- @echo *****************************************************************
- @echo Setting the boot environment
- @echo *****************************************************************
- @echo call w:WINDOWSSYSTEM32BCDBOOT w:WINDOWS /s s: /f all
- w:WINDOWSSYSTEM32BCDBOOT w:WINDOWS /s s: /f all
- if %errorlevel% NEQ 0 echo "Failed to set boot information" && goto :error
- @echo.
- @echo.
- @echo.
- @echo *****************************************************************
- @echo Setting the recovery environment
- @echo *****************************************************************
- @echo %InstallPath%reagentcreagentc /SetREImage /Path "r:RECOVERYWINDOWSRE" /target w:windows
- %InstallPath%reagentcreagentc /SetREImage /Path "r:RECOVERYWINDOWSRE" /target w:windows
- if %errorlevel% NEQ 0 echo "Failed to set recovery information" && goto :error
- @echo.
- @echo.
- @echo.
- attrib +H +R W:Recovery
- rmdir /s /q w:recycler
- @echo *****************************************************************
- @echo WIMboot image deployment COMPLETE. Type EXIT from Command
- @echo Prompt to restart or turn off device.
- @echo *****************************************************************
- color 2f
- Goto :END
- :ERROR
- @echo.
- @echo An error has been detected.
- color 4f
- @echo.
- goto :END
- :ListPar
- @REM This section is to bring a disk number and use it to List Partitions
- @echo.
- set TempDisk=%1
- diskpart /s x:Par.txt>x:ParOutput.txt
- for /f "skip=24 tokens=3" %%A in (x:ParOutput.txt) do (
- if /i "%%A"=="no" set Disk=%TempDisk%
- )
- for /f "skip=26 tokens=4" %%A in (x:ParOutput.txt) do (
- if /i NOT "%%A"=="Winpe" set Disk=%TempDisk%
- )
- Goto :EOF
- :END
- @rem
- @rem Get finish time so we can evaluate total WinPE phase time.
- @rem
- call |time>x:StopTime.txt
- @rem
- @rem Now parse both files to display the Start and Finish Time
- @rem
- @echo.
- @echo.
- for /f "tokens=5" %%A in (x:starttime.txt) do echo Script Start Time is %%A
- for /f "tokens=5" %%A in (x:stoptime.txt) do echo Script Stop Time is %%A
- @echo.`
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement