0

我正在尝试创建批处理文件。如何在选择分区号时使用用户输入?我想格式化一些分区只使用diskpart. 我已经学习了如何选择磁盘号,但我也想学习选择分区号。有时分区号会改变。那么如何用户输入来选择分区号呢?

我现在在下面做。但是我想在选择分区的时候,它也应该要求我选择分区号,但是怎么做呢?

@echo off

cd /d"%~dp0"
rem == List Disk and List Partitions ======================
echo >diskpart.txt List Disk
diskpart /s diskpart.txt

set /p Disk=Please enter the disk number:
if "%Disk%"=="" goto :eof
echo > diskpart.txt Select disk %disk%
echo >> diskpart.txt list partition
diskpart /s diskpart.txt

echo ============= Please check your Disk and all Partition numbers before continue =============

pause

rem == List Disk Again for Final Confirmation ======================
echo >diskpart.txt List Disk
diskpart /s diskpart.txt

set /p Disk=Please enter the disk number:
if "%Disk%"=="" goto :eof
echo > diskpart.txt Select disk %disk%

rem == 1. Format System partition ======================
echo >> diskpart.txt select partition 1
echo >> diskpart.txt format quick fs=fat32 label="System"

rem == 2. Format Windows partition ========================
echo >> diskpart.txt select partition 3
echo >> diskpart.txt format quick fs=ntfs label="Windows"

rem == 3. Format Recovery tools partition ================
echo >> diskpart.txt select partition 4
echo >> diskpart.txt format quick fs=ntfs label="Recovery"

echo >> diskpart.txt list partition

diskpart /s diskpart.txt

pause
4

1 回答 1

0

(由于我是 stackoverflow 的新手,我不能使用评论来澄清。)

在选择分区时,它应该要求我选择分区是第一个“分区”是“磁盘”吗?

据我了解,您向用户展示了 diskpart 的输出list disk并希望他同时选择磁盘和分区?

获取所有可用磁盘并将它们保存在列表中,然后为每个磁盘调用 diskpart 并执行list partition. 这样,用户可以看到所有磁盘及其所有分区,并且可以一次输入磁盘和分区号。

setlocal ENABLEDELAYEDEXPANSION
set DiskList=
for /F "skip=9 tokens=1,2,*" %%A in ('^(echo.list disk^) ^| diskpart') do (
    set DiskList=!DiskList! %%B
)

for %%a in (%DiskList%) do (
    echo.
    echo.Disk %%a
    for /F "skip=12 delims=" %%A in ('^(echo.select disk %%a ^^^& echo.list partition ^) ^| diskpart') do (
        if /i not "%%A" == "DISKPART> " echo.    %%A
    )
)

此外,您可以跟踪所有磁盘和分区号,如 %DiskList% 并验证用户输入是否有意义。

有了这个diskpart-for-loops,您还可以在磁盘选择之后使用这些信息进行进一步验证detail diskdetail volume

另一种同时选择磁盘和分区的方法是使用 select volume。这需要为分区分配一个驱动器号,该驱动器号不适用于“系统”(引导)分区。

编辑您几乎自己找到了答案。您已经列出了磁盘并要求用户提供磁盘编号。对分区号执行相同的操作。唯一的区别是您需要先选择磁盘,然后才能选择分区。

echo >diskpart.txt List Disk
diskpart /s diskpart.txt
set /p Disk=Please enter the disk number:

rem - listing partition needs a selected disk
echo >diskpart.txt select %Disk%
echo >diskpart.txt list partition
diskpart /s diskpart.txt
set /p Part=Please enter the partition number:

echo >diskpart.txt select %Disk%
echo >diskpart.txt select %Part%
rem - do whatever you want to do, e.g. like
echo >diskpart.txt format ... 
diskpart /s diskpart.txt
于 2022-02-09T14:21:23.300 回答