2015-08-25 2 views
0

Использование сценария .bat на USB-накопителе Я хотел бы изменить букву диска без использования стороннего программного обеспечения и любых требований к системе, в которой подключен USB, за исключением того, что это Windows XP или выше.Найдите текущий номер тома diskpart в .bat

Чтобы получить текущую букву диска я использую

набор ПРИВОД =% ~ dp0

Что E: например

Прежде чем я могу реально изменить E: 's привод письмо, как я могу автоматически узнать номер тома в списке томов diskpart?

выберите объем E:

явно не будет работать, вы можете использовать только п для числа дисков.

EDIT:

Благодаря @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: \

+0

Видимо [дубликат] (http://serverfault.com/questions/62578/how-to-get-a-list-of-drive-letters-on-a-system-through-a-windows-shell -bat-cmd), если речь идет только о поиске буквы диска. – wOxxOm

+0

@wOxxOm Пожалуйста, прочитайте, прежде чем говорить, что это дубликат, я уже читал все о поиске букв дисков, но это не мой вопрос здесь. Я знаю букву диска, но мне нужен номер объема, используемый в diskpart. – RapidFireArts

+0

@wOxxOm Извините, но я не понимаю, как это работает. Я попытался запустить 'echo list volume | diskpart' в файле bat и в cmd вручную, но все, что он делает, - это открытие diskpart. Я не знаком с результатами синтаксического анализа, использующими for/f, хотя я раньше использовал cmd:/ – RapidFireArts

ответ

1

Разбирает список томов, выглядит следующим образом:

Том 6 E MY_USB FA T32 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), немного обман с символическими номерами будут необходимы в случае, если имя тома содержит пробелы.

+0

спасибо за ваш быстрый ответ, но он все еще только открывает окно diskpart и ничего не происходит (закрытие ничего не возвращает и скрипт заканчивается). он не должен отличаться для Windows 10, чем любая другая версия, но может ли это быть проблемой? это новая установка. жаль, что так проблематично ...сценарий точно «@echo off NL for/f» tokens = 2,3 "%% a in ('echo list volume^| diskpart') do (NL if %% b == U echo Номер тома - %% a NL) NL pause' (NL следующая строка) – RapidFireArts

+0

Запустить 'объем эхо-списка | diskpart' в командной строке и сравнить результат с ссылкой в ​​ответе. – wOxxOm

+0

У меня нет точного синтаксиса, но он может работать лучше, если вы попытаетесь получить эту информацию с помощью wmic – Marged

 Смежные вопросы

  • Нет связанных вопросов^_^