Пакетный файл для поиска USB-накопителя и изменения буквы диска

Я пытаюсь автоматизировать наш процесс создания изображений. У нас есть несколько моделей компьютеров с разными образами, которые хранятся на одном USB-накопителе с WinPE. Я дошел до создания сценария, который дает мне возможность использовать Choice для выбора компьютера, на котором я хочу создать образ, но проблема в том, что в зависимости от того, на каком компьютере я создаю образ, меняется буква USB-накопителя. Я хочу создать командный файл, который найдет USB-накопитель и изменит букву диска на «X:», чтобы сценарий Choice мог правильно работать со статической буквой диска для поиска файлов изображений.

Я поискал и нашел сценарий, который найдет USB-накопитель по имени «Ace» и выведет букву диска, но не смог понять, как взять этот накопитель и изменить его на «X:»

for /f "tokens=3 delims= " %%A in ('echo list volume ^| diskpart ^| findstr "Ace"') do (set Acedrive=%%A)

На данный момент у меня есть следующее:

echo off
cls
Echo Image Selection Menu
Echo =======================
Echo 1 Dell D820
Echo 2 Dell E6510
Echo 3 Dell E6520
Echo 4 Lenovo T431S
Echo 5 Lenovo T440S
Echo 6 Lenovo M73 Tiny
Echo =======================
Choice /C 123456 /M "What computer are you trying to image?"
If Errorlevel 6 goto 6
If Errorlevel 5 goto 5
If Errorlevel 4 goto 4
If Errorlevel 3 goto 3
If Errorlevel 2 goto 2
If Errorlevel 1 goto 1

Goto End

:6
cls
imagex /apply M73.wim 1 g:
Goto End

:5
cls
imagex /apply T440S.wim 1 g:
Goto End

:4
cls
imagex /apply T431S.wim 1 g:
Goto End

:3
cls
imagex /apply E6520.wim 1 g:
Goto End

:2
cls
imagex /apply E6510.wim 1 g:
Goto End

:1
cls
imagex /apply D820.wim 1 g:
:End

Таким образом, это в основном просто дает мне возможность выбрать, какой компьютер я создаю, а затем запускает связанную команду imagex для этого wim. Любая помощь будет принята с благодарностью!

Спасибо


person Chris    schedule 16.04.2015    source источник
comment
Может быть, командный файл не всегда лучший выбор ...   -  person Thomas Weller    schedule 17.04.2015
comment
@ThomasWeller - Пакетный режим более чем подходит для этого.   -  person SomethingDark    schedule 17.04.2015
comment
@SomethingDark: тогда я неправильно понял, извини. Я подумал, что он хотел назначить USB-накопителю другую букву диска, как вы можете сделать в управлении дисками Windows (создание и форматирование разделов жесткого диска), а не только компакт-диск.   -  person Thomas Weller    schedule 17.04.2015
comment
На самом деле Томас прав. Я пытаюсь изменить букву диска с той, которую ему назначает компьютер, на x: \. Мой сценарий указывает на определенный диск, но если буква диска меняется каждый раз, сценарий не работает. Приносим извинения за недоразумение и благодарим вас за помощь.   -  person Chris    schedule 20.04.2015


Ответы (3)


Попробуйте этот код:

for /f "tokens=2,3 delims= " %%A in ('echo list volume ^| diskpart ^| findstr "Ace"') do (
set Acedrive=%%B
(echo select volume %%A
echo assign letter=X) | diskpart
)

надеюсь, вы найдете это полезным.

person Pupa Rebbe    schedule 20.04.2015
comment
Чувак ты гений. Большое спасибо! Именно то, что я искал. - person Chris; 20.04.2015

Вам нужна малоизвестная и еще менее часто используемая опция /d команды cd, которая перемещает не только каталоги, но и диски.

@echo off
for /f "tokens=3 delims= " %%A in ('echo list volume ^| diskpart ^| findstr "Ace"') do (set Acedrive=%%A)
cd /d %Acedrive%:\

Просто не забудьте запустить сценарий от имени администратора, иначе diskpart откроется в новом окне и код не будет работать.

person SomethingDark    schedule 16.04.2015
comment
Я пытаюсь изменить букву диска с той, которую ему назначает компьютер, на x: \. Мой сценарий указывает на определенный диск, но если буква диска меняется каждый раз, сценарий не работает. Извините за путаницу и спасибо, ребята, за помощь - person Chris; 20.04.2015
comment
@Chris - Это именно то, что делает мой код. Он находит, какой диск содержит строку Ace в имени, и меняет диск на этот. Как это не то, что вам нужно? - person SomethingDark; 20.04.2015
comment
Прости. Я новичок в написании сценариев. Когда я запускаю сценарий, он просто меняет каталог на этот диск. Я ищу, чтобы он изменил USB-накопитель с d: на x: или на любую другую букву, которую я выберу. Я хочу его переназначить. Я знаю, что могу делать diskpart и запускать команды каждый раз, но я пытаюсь сделать это без присмотра. - person Chris; 20.04.2015
comment
Ооо ... Я не знаю, как это сделать. И, честно говоря, если у вас нет более одного диска с Ace в названии, он будет работать нормально автоматически. - person SomethingDark; 20.04.2015
comment
Я добавил то, что у меня есть, в свой исходный пост. Итак, что вы говорите - добавлять свой код перед применением каждой команды imagex? Таким образом он меняет каталог на usb правильно? - person Chris; 20.04.2015

Вы можете попробовать, как этот пакет, чтобы найти букву диска подключенного USB-ключа:

@echo off
Mode con cols=98 lines=10 & Color 9E
Title Searching the Drive letter of your USB Key by Hackoo 2014
echo.
ECHO   *******************************************************************************************
echo.
echo                           Searching the drive letter of your USB Key .......
echo.
ECHO   *******************************************************************************************
wmic logicaldisk get DeviceID,DriveType /Format:CSV > %Tmp%\tmp.txt 
for /f "skip=2 tokens=1-3 delims=," %%a in ('%COMSPEC% /a /c type "%Tmp%\tmp.txt"') do echo %%b %%c >> %Tmp%\tmp2.txt
for /f "tokens=1" %%i in ('%COMSPEC% /a /c type "%Tmp%\tmp2.txt" ^|Find "2"') Do (set MyUSBDrive=%%i)
Del %Tmp%\tmp.txt & Del %Tmp%\tmp2.txt
cls
echo.
ECHO   *******************************************************************************************
echo.
echo                          The drive letter of your USB Key is  %MyUSBDrive%
echo.
ECHO   *******************************************************************************************
pause
person Hackoo    schedule 20.04.2015
comment
Привет, Hackoo. Я нашел сценарий, в котором будет указано, какая буква диска у моего USB-накопителя, но мне было интересно, есть ли другой сценарий для переназначения одной буквы диску на другую. - person Chris; 20.04.2015