我需要创建一个分区和格式化USB驱动器的批处理文件。这是为了创建一个Windows 7 USB启动盘。
DISKPART是使用的工具,您可以按照以下方式传递说明:
DISKPART / s instructions.txt
在我的情况下,我希望我的指示看起来像这样:
example prepdisk.txt
SELECT DISK <Prompt user to either enter a number or q for quit>
CLEAN
CREATE PARTITION PRIMARY
FORMAT QUICK FS=NTFS LABEL="Windows"
ACTIVE
ASSIGN LETTER="C"
然后我会有一个这样的批处理文件:
prepdisk.bat:
DISKPART /s prepdisk.txt
但我仍然坚持如何提示用户输入磁盘ID。我还希望能够退出,如果不确定,因为显然格式化错误的驱动器可能是危险的。
答案 0 :(得分:1)
请参阅set /?
帮助。您需要使用set /p var=promptText
向用户询问输入。用户类型将存储在指示的变量中。
Diskpart
接受来自脚本文件和stdin的命令。因此,我们可以向其发送命令以向用户显示信息并检查选择。
将此作为基础(另存为.cmd
文件)并根据您的需要进行调整。
@echo off
setlocal enableextensions disabledelayedexpansion
:ask
rem select disk to format
call :showDiskTable
set /p "diskNumber=Type number of disk to format: " || goto :processCancelled
rem test disk selection
( echo select disk %diskNumber%
echo list disk
) | diskpart | findstr /b /c:"*" >nul || (
echo(
echo WRONG SELECTION
echo(
goto :ask
)
rem confirm disk selection
cls
call :showDiskTable
set "answer=%random%%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 "scriptFile=%temp%\%~nx0.%random%%random%%random%.tmp"
> "%scriptFile%" (
echo SELECT DISK %diskNumber%
echo CLEAN
echo CREATE PARTITION PRIMARY
echo FORMAT QUICK FS=NTFS LABEL="Windows"
echo ACTIVE
echo ASSIGN LETTER="C"
)
rem execute script file
type "%scriptFile%"
rem diskpart /s "%scriptFile%"
rem cleanup and exit
del /q "%scriptFile%"
echo(
echo DONE
echo(
exit /b 0
:showDiskTable
echo =====================================================
echo list disk | diskpart | findstr /b /c:" "
echo =====================================================
echo(
goto :eof
:processCancelled
echo(
echo PROCESS CANCELLED
echo(
exit /b 1
请注意,对于测试,diskpart /s file
已禁用,生成的脚本仅回显到控制台。如果一切正常,请移除type
行(不需要)和rem
之前的diskpart