|
本帖最后由 dos时代菜鸟 于 2021-1-11 19:59 编辑
dpx_3.7z
(730 Bytes, 下载次数: 8)
如下 cmd 脚本代码,检测 当前操作系统(非pe) 所在卷盘符,以及 bcd 卷,并自动分配盘符。win10 win7 环境基本通过,xp 环境不知道行不行。可能 xp 下的 diskpart 不行。
另外一些 引导分区 是 id=12 的 特殊分区,win 不识别的,可能也不行。
要求在 管理员权限下运行。语言环境 简体中文,cmd 脚本编码:ansi
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- set str1=卷
- set str2=系统
- set str3=启动
- set ltrs=ABCDEFGHIJKLMNOPQRSTUVWXYZ
- for /f "delims=" %%c in ('echo list vol ^| diskpart') do (
- for /f "tokens=1,2" %%h in ("%%c") do (
- if %%h==!str1! (if not %%i==### (
- set l0=%%c && set "l0= !l0:~1!"
- SET "ltr=!l0:~14,3!" && set "ltr=!ltr: =!"
- if "!ltr!"=="" set "ltr=*"
- for %%x in (!ltr!) do (set ltrs=!ltrs:%%x=!)
- SET info=!l0:~-9! && set info=!info: =!
- if !info!==!str2! set BCD_VOL=%%i,!ltr!
- if !info!==!str3! set WIN_VOL=%%i,!ltr!
- ))
- )
- )
- if /i "%1"=="/d" (
- if not "!bcd_vol:~-1,1!"=="*" (
- echo !BCD_VOL! ==^> *
- (
- echo sele vol !bcd_vol:~0,1!
- echo remove
- ) >"%temp%\diskpart_temp.txt"
- diskpart /s "%temp%\diskpart_temp.txt"
- del "%temp%\diskpart_temp.txt"
- set bcd_vol=!bcd_vol:~0,1!,*
- )
- ) else (
- if "!bcd_vol:~-1,1!"=="*" (
- set 2ltr=!ltrs:~-1!
- echo !BCD_VOL! ==^> !2ltr!
- (
- echo sele vol !bcd_vol:~0,1!
- echo assign letter=!2ltr!
- ) >"%temp%\diskpart_temp.txt"
- diskpart /s "%temp%\diskpart_temp.txt"
- del "%temp%\diskpart_temp.txt"
- set bcd_vol=!bcd_vol:~0,1!,!2ltr!
- )
- )
- echo.
- echo.
- echo.
- echo -----------------------------------------------------------------
- echo BCD_VOL=!BCD_VOL!
- ECHO WIN_VOL=!WIN_VOL!
- pause
复制代码
脚本自动找到 bcd_vol 卷,并判断是否配有盘符,如果没有,就把最后一个可用盘符分配给它。
附带参数 /d 用于 卸载 bcd_vol 卷。
|
|