Найти текущий номер тома диска в.bat

Используя скрипт.bat на USB-накопителе, я бы хотел изменить его букву без использования стороннего программного обеспечения и каких-либо требований к системе, к которой подключен 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 уже ничего не смонтировано: \

3 ответа

Решение

Разобрать список томов, который выглядит так:

Том 6 E MY_USB FAT32 Съемный 971 МБ Здоровый

Запустите в командной строке с повышенными правами или щелкните правой кнопкой мыши файл.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), в случае, если имя тома содержит пробелы, потребуется небольшая хитрость с номерами токенов.

Гораздо проще, как Вы думаете :) Не документировано, но работает!

      SELECT VOLUME E

Просто используйте букву тома вместо цифры...

Смотрите мой результат:

      C:\Temp>diskpart

Microsoft DiskPart version 10.0.19041.964

Copyright (C) Microsoft Corporation.
On computer: DESKTOP-H6E03H5

DISKPART> select volume e

Volume 3 is the selected volume.

DISKPART> list volume

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     C                NTFS   Partition   1862 GB  Healthy    Boot
  Volume 1         Helyreállít  NTFS   Partition    529 MB  Healthy    Hidden
  Volume 2                      FAT32  Partition     99 MB  Healthy    System
* Volume 3     E                NTFS   Removable    232 GB  Healthy
  Volume 4     D                RAW    Removable    232 GB  Healthy

DISKPART>

Третья строка в командном файле: «set DRIVE=%DRIVER:~0,1%» должна быть: «set DRIVE =% DRIVERAW: ~ 0,1%»

С этим изменением у меня все работает.

Другие вопросы по тегам