Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
joshuacline authored Jan 28, 2024
1 parent a02489e commit bd74db8
Showing 1 changed file with 244 additions and 0 deletions.
244 changes: 244 additions & 0 deletions imageproc.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
::Image Processor (C) Joshua Cline - All rights reserved
@ECHO OFF&&SETLOCAL ENABLEDELAYEDEXPANSION&&CD /D "%~DP0"&&Reg.exe query "HKU\S-1-5-19\Environment">NUL
IF NOT "%ERRORLEVEL%" EQU "0" ECHO Right-Click ^& Run As Administrator&&PAUSE&&EXIT 0
SET "##="&&SET "#$="&&SET "#@="&&FOR /F "TOKENS=*" %%a in ('ECHO %CD%') DO (SET "IMAGE_FOLDER=%%a")
SET "CAPS_SET=IMAGE_FOLDER"&&SET "CAPS_VAR=%IMAGE_FOLDER%"&&CALL:CAPS_SET
SET "CHAR_STR=%IMAGE_FOLDER%"&&SET "CHAR_CHK= "&&CALL:CHAR_CHK
IF DEFINED CHAR_FLG ECHO Remove the space from the path\folder name, then launch again&&PAUSE&&EXIT 0
TITLE Download more scripted utilities from github.com/joshuacline
:IMAGE_PROCESSOR
CLS&&FOR %%a in (PACK_XLVL WIM_XLVL) DO (IF NOT DEFINED %%a SET "%%a=FAST")
FOR %%a in (WIM_XXX PAK_XXX IMAGEPROC_SLOT) DO (IF NOT DEFINED %%a SET "%%a=1")
IF NOT DEFINED VHDX_XLVL SET "VHDX_XLVL=DISABLED"
IF NOT DEFINED SOURCE_TYPE SET "SOURCE_TYPE=WIM"&&SET "TARGET_TYPE=VHDX"
IF NOT DEFINED VHDX_SIZE SET "VHDX_SIZE=25600"
FOR %%a in (WIM_SOURCE VHDX_SOURCE) DO (SET "OBJ_FLD=%IMAGE_FOLDER%"&&CALL SET "OBJ_CHK=%%a"&&CALL:OBJ_CLEAR)
FOR %%a in (WIM_SOURCE VHDX_SOURCE WIM_TARGET VHDX_TARGET) DO (IF NOT DEFINED %%a SET "%%a=SELECT")
IF "%WIM_SOURCE%"=="SELECT" SET "WIM_DESC=NULL"&&SET "WIM_INDEX=1"
CALL:PAD_LINE&&ECHO Image Processing&&CALL:PAD_LINE
ECHO Place WIM/VHDX files in the same folder as this script&&CALL:PAD_LINE
IF "%SOURCE_TYPE%"=="WIM" IF NOT "%WIM_SOURCE%"=="SELECT" CALL:WIM_INDEX_QUERY
IF NOT DEFINED WIM_DESC SET "WIM_DESC=NULL"&&SET "WIM_INDEX=1"
IF "%SOURCE_TYPE%"=="WIM" IF "%TARGET_TYPE%"=="VHDX" ECHO WIM (%##%X%#$%) VHDX&&CALL:PAD_LINE
IF "%SOURCE_TYPE%"=="WIM" IF "%TARGET_TYPE%"=="WIM" ECHO WIM (%##%X%#$%) WIM&&CALL:PAD_LINE
IF "%SOURCE_TYPE%"=="VHDX" IF "%TARGET_TYPE%"=="WIM" ECHO VHDX (%##%X%#$%) WIM&&CALL:PAD_LINE
IF "%SOURCE_TYPE%"=="VHDX" ECHO AVAILABLE VHDX'S:&&SET "BLIST=VHDX"&&CALL:FILE_LIST&&CALL:PAD_LINE&&ECHO. (%##%S%#$%)ource[%#@%VHDX%#$%] [%#@%%VHDX_SOURCE%%#$%]&&CALL:PAD_LINE
IF "%SOURCE_TYPE%"=="WIM" ECHO AVAILABLE WIM'S:&&SET "BLIST=WIM"&&CALL:FILE_LIST&&CALL:PAD_LINE&&ECHO. (%##%S%#$%)ource[%#@%WIM%#$%] [%#@%%WIM_SOURCE%%#$%] (%##%I%#$%)ndex[%#@%%WIM_INDEX%%#$%] [Edition[%#@%%WIM_DESC%%#$%]&&CALL:PAD_LINE
IF "%TARGET_TYPE%"=="VHDX" ECHO EXISTING VHDX'S:&&SET "BLIST=VHDX"&&CALL:FILE_LIST&&CALL:PAD_LINE&&ECHO. (%##%T%#$%)arget[%#@%VHDX%#$%] [%#@%%VHDX_TARGET%%#$%] (%##%G%#$%)o^^! (%##%V%#$%)Size[%#@%%VHDX_SIZE%MB%#$%] (%##%Z%#$%)[%#@%%VHDX_XLVL%%#$%]&&CALL:PAD_LINE
IF "%TARGET_TYPE%"=="WIM" ECHO EXISTING WIM'S:&&SET "BLIST=WIM"&&CALL:FILE_LIST&&CALL:PAD_LINE&&ECHO. (%##%T%#$%)arget[%#@%WIM%#$%] [%#@%%WIM_TARGET%%#$%] (%##%G%#$%)o^^! (%##%Z%#$%)[X-Lvl[%#@%%WIM_XLVL%%#$%]&&CALL:PAD_LINE
ECHO Press (%##%Q%#$%) to quit&&CALL:MENU_SELECT
IF NOT DEFINED SELECT GOTO:IMAGE_PROCESSOR
IF "%SELECT%"=="Q" EXIT 0
IF "%SELECT%"=="X" CALL:IMAGEPROC_SLOT
IF "%SELECT%"=="T" CALL:IMAGEPROC_PROMPT
IF "%SELECT%"=="Z" CALL:IMAGEPROC_XLVL
IF "%SELECT%"=="S" CALL:IMAGEPROC_PICK&&SET "SELECT="
IF "%SELECT%"=="V" CALL:IMAGEPROC_VSIZE&&SET "SELECT="
IF "%SELECT%"=="I" IF "%SOURCE_TYPE%"=="WIM" IF NOT "%WIM_SOURCE%"=="SELECT" CALL:WIM_INDEX
IF "%SELECT%"=="G" CALL:IMAGEPROC_START&&CALL:PAUSED
GOTO:IMAGE_PROCESSOR
:IMAGEPROC_START
CALL:PAD_LINE&&ECHO Image Processing Start&&CALL:PAD_LINE&&SET "ERR_MSG="&&SET "APPLYDIR_MASTER=V:"&&SET "CAPTUREDIR_MASTER=V:"&&SET "VHDX_MB=%VHDX_SIZE%"
IF "%TARGET_TYPE%"=="VHDX" IF EXIST "%IMAGE_FOLDER%\%VHDX_TARGET%" SET "ERR_MSG=%##%Target %VHDX_TARGET% exists. Try another name or rename the existing file.%#$%"&&GOTO:IMAGEPROC_CLEANUP
IF "%TARGET_TYPE%"=="WIM" IF EXIST "%IMAGE_FOLDER%\%WIM_TARGET%" SET "ERR_MSG=%##%Target %WIM_TARGET% exists. Try another name or rename the existing file.%#$%"&&GOTO:IMAGEPROC_CLEANUP
IF "%SOURCE_TYPE%"=="VHDX" IF "%VHDX_SOURCE%"=="SELECT" SET "ERR_MSG=%##%Source %SOURCE_TYPE% not set.%#$%"&&GOTO:IMAGEPROC_CLEANUP
IF "%TARGET_TYPE%"=="VHDX" IF "%VHDX_TARGET%"=="SELECT" SET "ERR_MSG=%##%Target %TARGET_TYPE% not set.%#$%"&&GOTO:IMAGEPROC_CLEANUP
IF "%SOURCE_TYPE%"=="WIM" IF "%WIM_SOURCE%"=="SELECT" SET "ERR_MSG=%##%Source %SOURCE_TYPE% not set.%#$%"&&GOTO:IMAGEPROC_CLEANUP
IF "%TARGET_TYPE%"=="WIM" IF "%WIM_TARGET%"=="SELECT" SET "ERR_MSG=%##%Target %TARGET_TYPE% not set.%#$%"&&GOTO:IMAGEPROC_CLEANUP
IF EXIST "V:\" SET "ERR_MSG=%##%Drive letter V:\ can NOT be in use. Unmount the Vdisk in use.%#$%"&&GOTO:IMAGEPROC_CLEANUP
IF NOT DEFINED WIM_INDEX SET "WIM_INDEX=1"
IF NOT DEFINED WIM_XLVL SET "WIM_XLVL=FAST"
IF NOT "%VHDX_XLVL%"=="COMPACT" SET "COMPACTX="
IF "%VHDX_XLVL%"=="COMPACT" SET "COMPACTX= /COMPACT"
CALL:VDISK_DETACH&&IF "%SOURCE_TYPE%"=="WIM" IF "%TARGET_TYPE%"=="WIM" CALL:SCRATCH_CREATE
IF "%SOURCE_TYPE%"=="VHDX" SET "VDISK=%IMAGE_FOLDER%\%VHDX_SOURCE%"
IF "%TARGET_TYPE%"=="VHDX" SET "VDISK=%IMAGE_FOLDER%\%VHDX_TARGET%"
IF "%SOURCE_TYPE%"=="WIM" SET "IMAGE_SRC=%IMAGE_FOLDER%\%WIM_SOURCE%"
IF "%TARGET_TYPE%"=="WIM" SET "IMAGE_TGT=%IMAGE_FOLDER%\%WIM_TARGET%"
IF "%SOURCE_TYPE%"=="VHDX" IF "%TARGET_TYPE%"=="WIM" CALL:VDISK_ATTACH
IF "%SOURCE_TYPE%"=="WIM" IF "%TARGET_TYPE%"=="VHDX" CALL:VDISK_CREATE
IF "%SOURCE_TYPE%"=="WIM" IF "%TARGET_TYPE%"=="WIM" SET "VDISK=%SCRATCHDIR%\SCRATCH.VHDX"&&SET "VHDX_MB=20000"&&CALL:VDISK_CREATE
IF NOT EXIST "V:\" SET "ERR_MSG=%##%Virtual Disk Error. If VHDX refuses mounting, reboot and try again.%#$%"&&CALL:VDISK_DETACH&&GOTO:IMAGEPROC_CLEANUP
IF NOT DEFINED WIM_DESC SET "WIM_DESC=WINDICK"
IF "%SOURCE_TYPE%"=="WIM" IF "%TARGET_TYPE%"=="VHDX" DISM /ENGLISH /APPLY-IMAGE /IMAGEFILE:"%IMAGE_SRC%" /INDEX:%WIM_INDEX% /APPLYDIR:"%APPLYDIR_MASTER%"%COMPACTX%
IF "%SOURCE_TYPE%"=="WIM" IF "%TARGET_TYPE%"=="WIM" DISM /ENGLISH /APPLY-IMAGE /IMAGEFILE:"%IMAGE_SRC%" /INDEX:%WIM_INDEX% /APPLYDIR:"%APPLYDIR_MASTER%"
IF "%TARGET_TYPE%"=="WIM" IF NOT EXIST "%APPLYDIR_MASTER%\*" CALL:VDISK_DETACH&&DEL /F /Q "%IMAGE_FOLDER%\%WIM_TARGET%">NUL 2>&1
IF "%TARGET_TYPE%"=="VHDX" IF NOT EXIST "%APPLYDIR_MASTER%\*" CALL:VDISK_DETACH&&DEL /F /Q "%IMAGE_FOLDER%\%VHDX_TARGET%">NUL 2>&1
IF NOT EXIST "%APPLYDIR_MASTER%\*" CALL:PAD_LINE&&SET "ERR_MSG=%##%Source Extraction Error. If source refuses to extract, reboot and try again.%#$%"&&GOTO:IMAGEPROC_CLEANUP
IF "%TARGET_TYPE%"=="WIM" DISM /ENGLISH /CAPTURE-IMAGE /CAPTUREDIR:"%CAPTUREDIR_MASTER%" /IMAGEFILE:"%IMAGE_TGT%" /COMPRESS:%WIM_XLVL% /NAME:%WIM_DESC%
CALL:VDISK_DETACH>NUL 2>&1
:IMAGEPROC_CLEANUP
IF DEFINED ERR_MSG ECHO.&&ECHO %ERR_MSG%
ECHO.&&CALL:SCRATCH_DELETE&&CALL:PAD_LINE&&ECHO Image Processing Complete&&CALL:PAD_LINE
EXIT /B
:MENU_SELECT
SET "SELECT="&&SET /P "SELECT=$>>"
IF DEFINED SELECT SET "CAPS_SET=SELECT"&&SET "CAPS_VAR=%SELECT%"&&CALL:CAPS_SET
CALL SET "$ELECTMP=%%$ITEM%SELECT%%%"&&IF DEFINED SELECT CALL SET "$ELECT=%SELECT%"
IF DEFINED SELECT IF DEFINED $ELECTMP CALL SET "$ELECT$=%$ELECTMP%"
EXIT /B
:PROMPT_SET
IF NOT DEFINED PROMPT_SET SET "PROMPT_SET=SELECT"
SET "PROMPT_VAR="&&SET /P "PROMPT_VAR=$>>"
SET "CAPS_SET=%PROMPT_SET%"&&SET "CAPS_VAR=%PROMPT_VAR%"
IF DEFINED PROMPT_ANY CALL SET "%CAPS_SET%=%CAPS_VAR%"
IF NOT DEFINED PROMPT_ANY CALL:CAPS_SET
SET "PROMPT_ANY="&&SET "PROMPT_SET="&&SET "PROMPT_VAR="
EXIT /B
:CAPS_SET
FOR %%G in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (CALL SET "CAPS_VAR=%%CAPS_VAR:%%G=%%G%%")
CALL SET "%CAPS_SET%=%CAPS_VAR%"&&SET "CAPS_SET="&&SET "CAPS_VAR="
EXIT /B
:CHAR_CHK
FOR %%a in (CHAR_STR CHAR_CHK) DO (IF NOT DEFINED %%a EXIT /B)
SET "CHAR_FLG="&&FOR /F "DELIMS=" %%$ in ('CMD.EXE /D /U /C ECHO %CHAR_STR%^| FIND /V ""') do (IF "%%$"=="%CHAR_CHK%" SET "ERROR=1"&&SET "CHAR_FLG=1")
EXIT /B
:CHECK
SET "ERROR="&&IF NOT DEFINED SELECT SET "ERROR=1"
SET "CHAR_CHK= "&&SET "CHAR_STR=%SELECT%"&&CALL:CHAR_CHK
IF "%CHECK%"=="NUM" IF "%SELECT%" LSS "0" SET "ERROR=1"
IF "%CHECK%"=="NUM" IF "%SELECT%" GTR "9999999" SET "ERROR=1"
IF "%CHECK%"=="NUM" SET "CAPS_SET=SELECT"&&SET "CAPS_VAR=%SELECT%"&&CALL:CAPS_SET
IF "%CHECK%"=="NUM" FOR %%G in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (SET "CHAR_CHK=%%G"&&SET "CHAR_STR=%SELECT%"&&CALL:CHAR_CHK)
SET "CHECK="
EXIT /B
:OBJ_CLEAR
CALL SET "OBJ_CHKX=%%%OBJ_CHK%%%"
IF NOT EXIST "%OBJ_FLD%\%OBJ_CHKX%" CALL SET "%OBJ_CHK%=SELECT"
EXIT /B
:PAD_LINE
ECHO =====================================================================
EXIT /B
:PAD_PREV
ECHO Press (%##%Enter%#$%) to return to previous menu
EXIT /B
:PAUSED
SET /P "PAUSED=. Press (%##%Enter%#$%) to continue..."
EXIT /B
:FILE_PICK
IF NOT DEFINED PICK GOTO:PICK_ERROR
CLS&&CALL:PAD_LINE&&ECHO File Picker&&CALL:PAD_LINE&&ECHO AVAILABLE %PICK%'S:
SET "NLIST=%PICK%"&&CALL:FILE_LIST&&CALL:PAD_LINE&&ECHO Select a (%##%#%#$%)&&CALL:PAD_LINE&&CALL:PAD_PREV
FOR %%a in (ERROR SELECT $PICK $ELECT $ELECT$) DO (SET "%%a=")
SET /P "SELECT=$>>"&&FOR %%G in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (CALL SET "SELECT=%%SELECT:%%G=%%G%%")
IF "%SELECT%" GTR "9999999" SET "ERROR=1"
IF "%SELECT%" LSS "0" SET "ERROR=1"
IF DEFINED ERROR GOTO:PICK_ERROR
CALL SET "$ELECT=%SELECT%"&&CALL SET "$ELECT$=%%$ITEM%SELECT%%%"
IF NOT DEFINED $ELECT$ SET "ERROR=1"&&GOTO:PICK_ERROR
SET "$FOLD=%IMAGE_FOLDER%"
IF NOT EXIST "%$FOLD%\%$ELECT$%" SET "ERROR=1"&&GOTO:PICK_ERROR
IF EXIST "%$FOLD%\%$ELECT$%" SET "$PICK=%$FOLD%\%$ELECT$%"
:PICK_ERROR
SET "PICK="&&IF DEFINED ERROR SET "$PICK="
EXIT /B
:FILE_LIST
SET "$FOLD="&&FOR %%a in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30) DO (IF DEFINED $ITEM%%a SET "$ITEM%%a=")
IF NOT DEFINED BLIST IF NOT DEFINED NLIST GOTO:FILE_ERROR
IF DEFINED BLIST SET "$MENU=BAS"&&SET "EXT=%BLIST%"
IF DEFINED NLIST SET "$MENU=NUM"&&SET "EXT=%NLIST%"
SET "$FOLD=%IMAGE_FOLDER%\*.%EXT%"&&SET "$LABEL=%IMAGE_FOLDER%"&&ECHO.
IF NOT EXIST "%$FOLD%" ECHO [%#@%EMPTY..%#$%]
IF EXIST "%$FOLD%" SET "$XNT="&&DIR "%$FOLD%" /A: /B /O:GN>$HZ&&FOR /F "TOKENS=*" %%a in ($HZ) DO (IF NOT "%%a"=="$HZ" CALL SET /A "$XNT+=1"&&CALL SET "$CLM$=%%a"&&CALL:FILE_LISTX)
ECHO.&&IF EXIST "$HZ" DEL /F "$HZ">NUL 2>&1
:FILE_ERROR
FOR %%a in (EXT BLIST NLIST CRICKETS NOECHO1 NOECHO2 MENU_INSERTA $MENU $FOLD $LABEL) DO (SET "%%a=")
EXIT /B
:FILE_LISTX
CALL SET "$ITEM%$XNT%=%$CLM$%"
IF "%$MENU%"=="NUM" ECHO [ %##%%$XNT%%#$% ]\[%#@%%$CLM$%%#$%]
IF "%$MENU%"=="BAS" ECHO [%#@%%$LABEL%%#$%]\[%#@%%$CLM$%%#$%]
EXIT /B
:IMAGEPROC_XLVL
IF "%TARGET_TYPE%"=="WIM" CALL:WIM_XLVL
IF "%TARGET_TYPE%"=="VHDX" IF "%VHDX_XLVL%"=="COMPACT" SET "VHDX_XLVL=DISABLED"&&EXIT /B
IF "%TARGET_TYPE%"=="VHDX" IF "%VHDX_XLVL%"=="DISABLED" SET "VHDX_XLVL=COMPACT"&&EXIT /B
EXIT /B
:IMAGEPROC_VSIZE
SET "PROMPT_SET=VHDX_SIZE"&&CALL:PAD_LINE&&ECHO VHDX size?&&CALL:PAD_LINE&&CALL:PAD_PREV&&CALL:PROMPT_SET
SET "SELECT=%VHDX_SIZE%"&&SET "CHECK=NUM"&&CALL:CHECK
IF DEFINED ERROR SET "VHDX_SIZE=25600"
EXIT /B
:IMAGEPROC_PROMPT
IF "%TARGET_TYPE%"=="WIM" CALL:PAD_LINE&&ECHO Name of WIM?&&CALL:PAD_LINE&&CALL:PAD_PREV&&SET "PROMPT_SET=WIM_TARGET"&&SET "PROMPT_ANY=1"&&CALL:PROMPT_SET
IF "%TARGET_TYPE%"=="WIM" IF DEFINED WIM_TARGET SET "WIM_TARGET=%WIM_TARGET%.wim"
IF "%TARGET_TYPE%"=="VHDX" CALL:PAD_LINE&&ECHO Name of VHDX?&&CALL:PAD_LINE&&CALL:PAD_PREV&&SET "PROMPT_SET=VHDX_TARGET"&&SET "PROMPT_ANY=1"&&CALL:PROMPT_SET
IF "%TARGET_TYPE%"=="VHDX" IF DEFINED VHDX_TARGET SET "VHDX_TARGET=%VHDX_TARGET%.vhdx"
EXIT /B
:IMAGEPROC_PICK
IF "%SOURCE_TYPE%"=="WIM" SET "PICK=WIM"&&CALL:FILE_PICK
IF "%SOURCE_TYPE%"=="VHDX" SET "PICK=VHDX"&&CALL:FILE_PICK
CALL SET "%SOURCE_TYPE%_SOURCE=%$ELECT$%"
EXIT /B
:IMAGEPROC_SLOT
SET /A "IMAGEPROC_SLOT+=1"
IF "%IMAGEPROC_SLOT%" GTR "3" SET "IMAGEPROC_SLOT=1"
IF "%IMAGEPROC_SLOT%"=="1" SET "SOURCE_TYPE=WIM"&&SET "TARGET_TYPE=VHDX"
IF "%IMAGEPROC_SLOT%"=="2" SET "SOURCE_TYPE=VHDX"&&SET "TARGET_TYPE=WIM"
IF "%IMAGEPROC_SLOT%"=="3" SET "SOURCE_TYPE=WIM"&&SET "TARGET_TYPE=WIM"
EXIT /B
:WIM_XLVL
SET /A "WIM_XXX+=1"
IF "%WIM_XXX%" GTR "3" SET "WIM_XXX=1"
IF "%WIM_XXX%"=="1" SET "WIM_XLVL=FAST"
IF "%WIM_XXX%"=="2" SET "WIM_XLVL=MAX"
IF "%WIM_XXX%"=="3" SET "WIM_XLVL=NONE"
EXIT /B
:WIM_INDEX
SET /A "WIM_INDEX+=1"
IF "%WIM_INDEX%"=="20" SET "WIM_INDEX=1"
CALL:WIM_INDEX_QUERY
EXIT /B
:WIM_INDEX_QUERY
SET "WIM_DESC="&&DISM /ENGLISH /Get-ImageInfo /ImageFile:"%IMAGE_FOLDER%\%WIM_SOURCE%" /Index:%WIM_INDEX% >"$DISM"
FOR /F "TOKENS=1-5 DELIMS=<> " %%a in ($DISM) DO (IF "%%a"=="Edition" SET "WIM_DESC=%%c")
FOR /F "TOKENS=1-5 DELIMS=<> " %%a in ($DISM) DO (IF "%%a"=="Languages" IF NOT "%%c"=="" SET "WIM_SOURCE=SELECT")
IF NOT DEFINED WIM_DESC SET "WIM_DESC=NULL"&&SET "WIM_INDEX=1"
IF EXIST "$DISM" DEL /Q /F "$DISM">NUL
EXIT /B
:SCRATCH_CREATE
IF NOT DEFINED SCRATCHDIR SET "SCRATCHDIR=%IMAGE_FOLDER%\Scratch"
IF EXIST "%SCRATCHDIR%" SET "SCRATCHDIRX=%SCRATCHDIR%"&&CALL:SCRATCH_DELETE
IF DEFINED SCRATCHDIRX SET "SCRATCHDIR=%SCRATCHDIRX%"
IF NOT EXIST "%SCRATCHDIR%" MD "%SCRATCHDIR%">NUL 2>&1
SET "SCRATCHDIRX="
EXIT /B
:SCRATCH_DELETE
IF NOT DEFINED SCRATCHDIR SET "SCRATCHDIR=%IMAGE_FOLDER%\Scratch"
IF EXIST "%SCRATCHDIR%" DISM /cleanup-MountPoints>NUL 2>&1
IF EXIST "%SCRATCHDIR%" ATTRIB -R -S -H "%SCRATCHDIR%" /S /D /L>NUL 2>&1
IF EXIST "%SCRATCHDIR%" RD /S /Q "%SCRATCHDIR%">NUL 2>&1
SET "SCRATCHDIR="
EXIT /B
:VDISK_CREATE
IF NOT DEFINED VDISK EXIT /B
CALL:VDISK_DETACH>NUL 2>&1
IF NOT DEFINED VHDX_MB SET "VHDX_MB=25600"
IF EXIST "%VDISK%" DEL /Q /F "%VDISK%">NUL 2>&1
(ECHO.create vdisk file="%VDISK%" maximum=%VHDX_MB% type=expandable&&ECHO.Select vdisk file="%VDISK%"&&ECHO.Attach vdisk&&ECHO.create partition primary&&ECHO.select partition 1&&ECHO.format fs=ntfs quick&&ECHO.Assign letter=V noerr&&ECHO.Exit)>"$DSK"&&DISKPART /s "$DSK">NUL 2>&1
SET "VHDX_MB="&&DEL /F "$DSK">NUL 2>&1
EXIT /B
:VDISK_ATTACH
SET "VDISK_SYS="&&CALL:VDISK_DETACH>NUL 2>&1
(ECHO.Select vdisk file="%VDISK%"&&ECHO.Attach vdisk&&ECHO.select partition 1&&ECHO.Assign letter=V noerr&&ECHO.Exit)>"$DSK"&&DISKPART /s "$DSK">NUL 2>&1
IF EXIST "V:\WINDOWS" SET "VDISK_SYS=1"
DEL /F "$DSK">NUL 2>&1
EXIT /B
:VDISK_DETACH
(ECHO.Select vdisk file="%VDISK%"&&ECHO.Detach vdisk&&ECHO.Exit)>"$DSK"&&DISKPART /s "$DSK">NUL 2>&1
IF EXIST "V:\" CALL:VDISK_BRUTE
DEL /F "$DSK">NUL 2>&1
EXIT /B
:VDISK_BRUTE
(ECHO.List Volume&&ECHO.Exit)>"$DSK1"&&DISKPART /s "$DSK1">"$DSK2"
SET "DISK_TMP="&&FOR /F "TOKENS=1-9 DELIMS= " %%a IN ($DSK2) DO (IF "%%c"=="V" CALL SET "DISK_TMP=%%b")
(ECHO.Select Volume %DISK_TMP%&&ECHO.Detail Volume&&ECHO.Exit)>"$DSK1"&&DISKPART /s "$DSK1">"$DSK2"
SET "DISK_TMP="&&FOR /F "TOKENS=1-9 DELIMS= " %%a IN ($DSK2) DO (
IF "%%a"=="Disk" IF NOT "%%b"=="###" SET "DISK_TMP=%%b"
IF "%%a"=="*" IF "%%b"=="Disk" SET "DISK_TMP=%%c")
(ECHO.List Vdisk&&ECHO.Exit)>"$DSK1"&&DISKPART /s "$DSK1">"$DSK2"
SET "VDISK_TMP="&&FOR /F "TOKENS=1-9* DELIMS= " %%a IN ($DSK2) DO (IF "%%a"=="VDisk" IF "%%d"=="%DISK_TMP%" IF EXIST "%%i" SET "VDISK_TMP=%%i")
CALL:PAD_LINE&&CALL ECHO Detaching [%VDISK_TMP%]&&CALL:PAD_LINE
(ECHO.Select vdisk file="%VDISK_TMP%"&&ECHO.Detach vdisk&&ECHO.Exit)>"$DSK1"&&DISKPART /s "$DSK1" >NUL 2>&1
DEL /F "$DSK*">NUL 2>&1
EXIT /B

0 comments on commit bd74db8

Please sign in to comment.