我需要创建一个批处理文件,对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方面遇到了困难。我也希望能够退出,如果不确定,因为显然格式化错误的驱动器可能是危险的。
发布于 2015-07-01 10:20:55
请参阅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行(不需要)和diskpart之前的rem
发布于 2022-05-19 14:01:10
我很感兴趣,但如果你写:
set /a disknr=0然后执行:
diskpart /s list.txt当list.txt包含:
select disk %disknr%
list part你得到了同样好的结果。
https://stackoverflow.com/questions/31157522
复制相似问题