Kody Brown
Thank you very much for the code. I have incorporated your code in this version (work-in-process) of my script.
I am stuck on line 67
call DISKPART.exe /s "%tmpfile%" >DiskpartList.txt | findstr /B /C:" " >nul || (
It's processing:
echo (
echo WRONG SELECTION
echo )
goto :ask
which is just after line 67
I don't understand what it is doing.
This is my latest version of the script:
@echo off
setlocal enableextensions disabledelayedexpansion
:ask
rem select disk to format
call :showDiskTable
type "%CD%\DiskpartList.txt"
set /p diskNumber="Enter the disk number: " || goto :processCancelled
rem test disk selection
call :selectDrive
rem confirm disk selection
cls
call :showDiskTable
set "answer=%random%"
set /p confirm="If you are sure you want to format disk %diskNumber%, type %answer%: "
if not "%confirm%"=="%answer%" goto :processCancelled
rem Create script file
set "DiskPartScriptFile=%temp%\DiskPartScriptFile%~nx0.%random%%random%%random%.tmp"
> "%DiskPartScriptFile%" (
echo SELECT DISK %diskNumber%
echo ::CLEAN
echo ::CREATE PARTITION PRIMARY
echo ::FORMAT FS=fat32 quick label="Backup"
echo ::ACTIVE
)
rem execute script file
type "%DiskPartScriptFile%"
rem diskpart /s "%DiskPartScriptFile%"
rem cleanup and exit
::del /q "%DiskPartScriptFile%"
::del /q "DiskpartList.txt"
echo(
echo DONE
echo(
exit /b 0
:showDiskTable
set "tmpfile=%TEMP%\Diskpartcmd.tmp"
(
echo LIST DISK
echo EXIT
) > "%tmpfile%"
echo ============================
call DISKPART.exe /s "%tmpfile%" >DiskpartList.txt | findstr /B /C:" " >nul
echo ============================
if exist "%tmpfile%" del /F /Q "%tmpfile%"
set "tmpfile="
goto :eof
:selectDrive
set "tmpfile=%TEMP%\Diskpartcmd.tmp"
(
echo select disk %diskNumber%
echo list disk
echo EXIT
) > "%tmpfile%"
echo ============================
call DISKPART.exe /s "%tmpfile%" >DiskpartList.txt | findstr /B /C:" " >nul || (
echo (
echo WRONG SELECTION
echo )
goto :ask
echo ============================
if exist "%tmpfile%" del /F /Q "%tmpfile%"
set "tmpfile="
goto :eof
:: | findstr /b /c:" "
:processCancelled
(
PROCESS CANCELLED
)
exit /b 1
Thank you,
Docfxit