找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 100|回复: 3

[文本处理] 求助 自动挂载ESP分区后如何获取盘符

[复制链接]
发表于 昨天 09:32 | 显示全部楼层 |阅读模式
本人小白,网上抄来一段代码,可自动挂载 ESP 隐藏分区,在不同电脑其分配的盘符不同
求助各位老师:如何输出或获取已挂载的盘符

  1. for /f "usebackq tokens=2 delims= " %%i in (` echo list disk ^| diskpart ^| find "磁盘" `) do (
  2.     echo select disk=%%i > "%temp%\mount_esp.txt"
  3.     echo list partition >> "%temp%\mount_esp.txt"
  4.     for /f "usebackq tokens=2 delims= " %%j in (` diskpart /s "%temp%\mount_esp.txt" ^| findstr /i "系统 system" `) do (
  5.         echo select disk=%%i >> "%temp%\mount_esp.txt"
  6.         echo select partition=%%j >> "%temp%\mount_esp.txt"
  7.         echo assign >> "%temp%\mount_esp.txt"
  8.         diskpart /s "%temp%\mount_esp.txt" >nul
  9.         del /q /f "%temp%\mount_esp.txt"
  10. ) )
复制代码
发表于 昨天 15:02 | 显示全部楼层
如果 winPE 中文系统已自动挂载 esp 分区并被分配了盘符,可用以下代码获取其 esp 分区盘符...

test.bat
  1. @echo off &setlocal &(echo,list volume&echo,exit)>#.$
  2. for /f "tokens=3 delims= " %%a in ('diskpart /s #.$^|findstr /ic:" fat32 " /c:" 系统 " ') do set "ltr=%%a"
  3. if "%ltr:~1,1%"=="" (echo,ESP分区已有盘符=%ltr%) else echo,ESP分区没有盘符
  4. del /q "#.$" &pause&exit/b
复制代码
发表于 昨天 15:14 | 显示全部楼层
之前挂载ESP的命令(前贴)我在PE和Windows11下都试了,是正确的,为什么还要选择这么麻烦的方法?

Snipaste_2026-08-22_15-12-29.png


  1. @echo off
  2. set "ESPDrive="

  3. for %%i in (Z Y X W V U T S R Q P O N M L K J I H G F E D) do if not defined ESPDrive if not exist "%%i:\" (
  4.     mountvol %%i: /s >nul 2>&1 && set "ESPDrive=%%i:"
  5. )

  6. if not defined ESPDrive echo ESP mount failed.&pause&exit /b
  7. echo ESP=%ESPDrive%

  8. pause
复制代码


发表于 昨天 21:02 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-8-22 21:17 编辑

再给一个版本如下,补充2楼代码如未发现 esp 分区盘符会自动配置其盘符的处理方案...

test.bat (用于没有 wmic, powershell 组件的 winPE 系统)
  1. @echo off &setlocal &(echo,list volume&echo,exit)>#.$
  2. for /f "tokens=2,3 delims= " %%a in ('diskpart /s #.$^|findstr /ic:" fat32 " /c:" 系统 " ') do set "v=%%a" &set "ltr=%%b"
  3. if "%ltr:~1,1%"=="" (echo,ESP分区已配置盘符=%ltr%&goto:[endESP]) else setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in ('fsutil fsinfo drives') do set "allD=%%a" &set "allD=!allD:* =!"
  5. for %%d in (Z Y X W V U T S R Q P O N M L K J I H G F) do if /i "!allD:%%d=!"=="!allD!" (
  6.    (echo,select volume %v%&echo,assign letter=%%d&echo,exit)>#.$
  7.    diskpart /s #.$ >nul
  8.    echo,已配置ESP分区盘符=%%d:&goto:[endESP] )
  9. :[endESP]
  10. del /q "#.$" &pause&exit/b
复制代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-8-23 04:50

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表