我正在尝试使用批处理脚本格式化“n”个磁盘。我的脚本如下。
diskpart /s "abc.txt"
其中 abc.txt 是:
sel disk 1
create part primary
format FS=NTFS label=label2 quick compress
我的问题是我想“循环” abc.txt 中的命令,以查找存在的磁盘数量。但我无法将 %1 之类的参数发送到 abc.txt 文件,因为它是一个 .txt 文件。而且我的 diskpart /s 只能将 .txt 文件作为参数。如何克服这个问题...有人可以帮忙吗?
答案1
以下方法可能会有点用:
echo list disk > list.txt
for /f "usebackq tokens=1,2" %%a in (`diskpart /s list.txt ^| findstr /r /c:"Disk [0-9]"`) do (
echo sel %%a %%b>abc.txt
echo create part primary>>abc.txt
echo format FS=NTFS label=label2 quick compress>>abc.txt
diskpart /s abc.txt
)
del list.txt abc.txt
这将首先从 diskpart 获取磁盘列表,然后将它们与脚本文件(将在循环中动态创建)一起使用。
我不会在这里尝试,因为我喜欢我的磁盘现在的样子。
答案2
@echo off
setlocal enabledelayedexpansion
cls
:: Eg. To enable choice prompt, change to set _CHOICE.ENABLE=
:: To disable choice prompt, change to set _CHOICE.ENABLE=::
:: Do the same for set _DISKPART.ENABLE=::
set _CHOICE.ENABLE=
set _DISKPART.ENABLE=::
set _TMP.FILE=%~dp0%~n0.DPS
for /f "skip=1 tokens=1" %%a in ('wmic diskdrive where "MediaType='Fixed Hard Disk Media'" get index') do (set _DISK.AVAIL=!_DISK.AVAIL! %%a)
set _DISK.AVAIL=!_DISK.AVAIL:~1!
for %%a in (!_DISK.AVAIL!) do (set "_DISKPART.SCRIPT=!_DISKPART.SCRIPT!select-disk-%%a create-partition-primary format-fs=ntfs-label="LABEL%%a"-quick-compress ")
:_FN.VAR2FILE
for /f "tokens=1*" %%a in ("!_DISKPART.SCRIPT!") do (
set _DISKPART.SCRIPT.FORMAT=%%a
set _DISKPART.SCRIPT.FORMAT=!_DISKPART.SCRIPT.FORMAT:-= !
if not exist "%_TMP.FILE%" (echo !_DISKPART.SCRIPT.FORMAT! > %_TMP.FILE%) else (echo !_DISKPART.SCRIPT.FORMAT! >> %_TMP.FILE%)
set _DISKPART.SCRIPT=%%b
)
if defined _DISKPART.SCRIPT (goto :_FN.VAR2FILE)
echo Generated Script^:
type %_TMP.FILE% | more
%_CHOICE.ENABLE% CHOICE /C TC /M "[T]erminate, or [C]ontinue"
%_CHOICE.ENABLE% if errorlevel 2 (call :_FN.DISKPART.RUN)
goto :_FN.FINISH
goto :eof
:_FN.DISKPART.RUN
if "!_DISKPART.ENABLE!"=="::" (echo Command is disabled, please see the header for information on how to enable it.)
%_DISKPART.ENABLE% diskpart /s %_TMP.FILE%
goto :eof
:_FN.FINISH
if exist "%_TMP.FILE%" (del /q %_TMP.FILE%)
echo All Done.
goto :eof
一个优雅的解决方案。
答案3
如果您总是重复使用相同的磁盘,那么您可以将它们作为静态磁盘放入。我已经对 USB 密钥这样做了。
SELECT DISK 6
CLEAN
CREATE PART PRI
SELECT PART 1
ACTIVE
ASSIGN
FORMAT FS=fat32 quick label="WINPE"
SELECT DISK 7
CLEAN
CREATE PART PRI
SELECT PART 1
ACTIVE
ASSIGN
FORMAT FS=fat32 quick label="WINPE"
EXIT
答案4
您可以简单地循环并在每次迭代中自动重新创建“abc.txt”文件。