在 .bat 中查找当前 diskpart 卷号

Find current diskpart volume number in .bat

在 USB 驱动器上使用 .bat 脚本我想在不使用第三方软件的情况下更改它的驱动器号以及对插入 USB 的系统的任何要求,除了它是 Windows XP 或更高。

获取我当前使用的盘符

set DRIVE=%~dp0

哪个是E:例如

在实际更改E:的盘符之前,如何自动找出diskpart的卷列表中的卷号?

select volume E:

显然不行,只能用n作为盘号。

编辑:

感谢@wOxxOm 提供的解决方案。 这是我的最终 .bat 脚本,我现在使用该脚本将脚本所在驱动器的驱动器盘符自动更改为 U:\

@echo off
set DRIVERAW=%~dp0
set DRIVE=%DRIVER:~0,1%
if %DRIVE%==U exit
for /f "tokens=2,3" %%a in ('echo list volume ^| diskpart') do (
    if %%b==%DRIVE% set VOLNO=%%a
)
del %DRIVERAW%\diskpart.txt
echo select volume %VOLNO% > %DRIVERAW%\diskpart.txt
echo assign letter=U >> %DRIVERAW%\diskpart.txt
echo ^G
diskpart /s %DRIVERAW%\diskpart.txt
exit

如果不应该安装到 U:\

,您可以将两个 U 替换为您想要的任何其他驱动器号

请确保 U:\

上没有任何内容已挂载

解析如下所示的卷列表:

Volume 6 E MY_USB FAT32 Removable 971 MB Healthy

运行 在提升的命令提示符下或右键单击 .bat 文件并 运行 作为管理员。

for /f "tokens=2,3" %%a in ('echo list volume ^| diskpart') do (
    if %%b==E echo Volume number is %%a
)

您还可以按卷名(使用 tokens=2,4)或按卷类型(使用 tokens=2,6)检查,如果卷名包含空格,则需要对令牌号进行一些小技巧。

批处理文件中的第三行,set DRIVE=%DRIVER:~0,1% 应该是,set DRIVE=%DRIVERAW:~0,1%

有了这个改变,它对我有用。