我正在尝试使用批处理脚本来格式化“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文件作为参数。 如何克服这个…任何人都可以请帮忙吗?
以下可能工作,还挺:
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获取磁盘列表,然后将其与您的脚本文件(将在循环中dynamic创build)一起使用。
我不会在这里尝试,因为我喜欢我的磁盘他们目前的方式。
@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
优雅的解决scheme。
您可以简单地循环,并在每次迭代中自动重新创build“abc.txt”文件。
如果你总是重复相同的磁盘,那么你可以把它们放在静态。 我已经做了这个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