磁盘部件如果基于卷号或驱动器类型?

时间:2016-03-29 18:07:07

标签: powershell batch-file automation disk-partitioning

我有两个用于成像新PC的脚本。如果PC有CD光盘则为1,如果不有则为1:

使用CD Rom:

    select disk 0
    clean
    create partition primary
    select volume 1
    assign letter="C"
    format quick fs=ntfs
    active
    exit

没有CD Rom:

select disk 0
clean
create partition primary
select volume 0
assign letter="C"
format quick fs=ntfs
active
exit

我正在寻找一种方法将这些组合成一个脚本,基本上决定第0卷是硬盘还是光盘,然后根据YES hdd或YES cd-rom执行上面的一个或其他脚本。

我不确定使用Powershell做得更好,或者If语句是否适用于Diskpart脚本,或者所有这些都可以使用简单的CMD批处理文件完成。

2 个答案:

答案 0 :(得分:1)

我不知道“Diskpart Script”是什么样的,但您可以通过修改此脚本顶部的scriptname变量来选择输出文件名,该变量将在您的磁盘信息中查找“CD-ROM”(像@aschipfl提到的wmic命令)并输出上面引用的一个或另一个命令块。它也可以在最后为你运行该命令。

@ECHO OFF
set scriptname=yourscript.scr

REM Look for "CD-ROM" in disk information
wmic logicaldisk |findstr "CD-ROM" 1>nul
if ERRORLEVEL 1 (
REM If we did not find "CD-ROM", set volnum to 0
echo "no cd rom"
set volnum=0
) else (
REM If we found "CD-ROM", set volnum to 1
echo "has a cd rom"
set volnum=1
)

REM Write the script
 >"%scriptname%" echo.select disk 0
>>"%scriptname%" echo.clean
>>"%scriptname%" echo.create partition primary
>>"%scriptname%" echo.select volume %volnum%
>>"%scriptname%" echo.assign letter="C"
>>"%scriptname%" echo.format quick fs=ntfs
>>"%scriptname%" echo.active
>>"%scriptname%" echo.exit
REM run it by removing the 'REM' from the next line:
REM "%scriptname%"

答案 1 :(得分:1)

create partition自动选择已创建的分区和相应的卷。所以,select volume根本不是必需的。只需删除它。