You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows PE中通过Batch脚本调用diskpart批量移除所有驱动器号?

解决方案:WinPE下用Batch脚本自动移除所有驱动器号

嗨,我刚好有个完美适配你需求的方案——纯Batch脚本,不用PowerShell,借助diskpart的脚本模式和noerr参数就能搞定WinPE里的批量驱动器号移除。

核心思路

diskpart支持通过脚本文件批量执行命令,加上noerr参数后,即使遇到错误(比如分区没有驱动器号、操作不允许)也会继续执行后续命令,不会中断整个流程,非常适合这种边界性的批量操作场景。

完整Batch脚本

@echo off
setlocal enabledelayedexpansion

:: 临时文件路径定义
set "list_part_script=%temp%\list_partitions.txt"
set "part_output=%temp%\partition_results.txt"
set "clean_script=%temp%\clean_drives.txt"

:: 生成diskpart脚本,用于列出所有分区
echo list partition > "%list_part_script%"
:: 执行脚本并保存输出
diskpart /s "%list_part_script%" > "%part_output%"

:: 解析分区输出,生成清理驱动器号的diskpart脚本
for /f "skip=9 tokens=1,4" %%a in ('type "%part_output%" ^| findstr /r "^[ ]*[0-9]"') do (
    :: 只处理有驱动器号的分区
    if not "%%b"=="" (
        echo select partition %%a >> "%clean_script%"
        echo remove letter=%%b noerr >> "%clean_script%"
    )
)

:: 如果生成了清理脚本,执行它
if exist "%clean_script%" (
    echo 正在移除所有已分配的驱动器号...
    diskpart /s "%clean_script%"
)

:: 清理临时文件
del "%list_part_script%" 2>nul
del "%part_output%" 2>nul
del "%clean_script%" 2>nul

endlocal
echo 操作完成:已尝试移除所有可访问的驱动器号

脚本说明

  • 临时文件处理:先创建一个diskpart脚本用来列出系统所有分区,执行后把结果保存到临时文件,方便后续解析。
  • 分区解析:跳过diskpart输出的前9行表头信息,提取有驱动器号的分区号和对应字母。
  • 生成清理命令:对每个带驱动器号的分区,生成select partition [编号]和remove letter=[字母] noerr命令,noerr确保遇到错误不中断。
  • 执行与清理:运行生成的清理脚本,最后删除所有临时文件,保持环境干净。

WinPE环境注意事项

  • WinPE默认自带diskpart工具,无需额外安装组件。
  • 由于WinPE环境默认拥有管理员权限,直接运行脚本即可,无需额外提权。
  • 对于系统分区或被锁定的分区,remove命令会失败,但noerr参数会让脚本继续处理其他分区,不影响整体流程。

内容的提问来源于stack exchange,提问作者BNT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:27:51