在.bat

时间:2015-08-25 20:09:51

标签: batch-file disk-partitioning drive-letter

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

要获取当前的驱动器号,我使用

  

设置DRIVE =%~dp0

哪个是E:例如

在我真正改变E:的驱动器号之前,如何自动找出diskpart卷列表中的卷号?

  

选择卷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:\

上没有安装任何内容

2 个答案:

答案 0 :(得分:1)

解析看起来像这样的卷列表:

  

第6卷E MY_USB FAT32可移动971 MB健康

在提升的命令提示符下运行或右键单击.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)进行检查,如果卷名称包含空格,则需要使用令牌编号。

答案 1 :(得分:0)

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

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