Как определить текущую букву диска при автозапуске в Windows? - PullRequest
0 голосов
/ 14 февраля 2012

Под Windows 7 я создал настраиваемую запись автозапуска для USB-устройства. Эта запись запускает командный файл на моем жестком диске, а не на USB-диске. У моего жесткого диска всегда одна и та же буква диска. Как сообщить пакетному файлу, какая буква диска назначается USB-устройству или как получить это в самом пакетном файле?

Я обнаружил, что это не% ~ d0

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Я удивлен% ~ d0 не работает, но ваш пакетный файл работает.

Если вы можете назначить уникальную метку тома для вашего USB-устройства, то вы можете попробовать следующее:

for /f %%D in ('wmic volume get driveLetter^, label ^| find "yourLabel"') do set drive=%%D

РЕДАКТИРОВАТЬ после прочтения комментария - ОК,% ~ d0 не должен работать, потому что он просто даст букву диска, на котором находится ваш файл bat - ваш жесткий диск.

Я все еще думаю, что WMIC - это утилита, которая вам понадобится. Если вы ищете конкретное устройство, то я думаю, что мой оригинальный ответ может сработать. Другая возможность - заменить serialNumber меткой в ​​команде wmic. Подключите ваше устройство, определите, какая буква диска используется вручную, а затем введите wmic volume get driveLetter, serialNumber в командной строке, чтобы определить, какой серийный номер вы ищете. Тогда вы можете использовать следующее в вашем пакетном файле

for /f %%D in ('wmic volume get driveLetter^, serialNumber ^| find "yourSerialNumber"') do set drive=%%D

Другой возможностью может быть размещение вашего командного файла на USB-устройстве. Если вы можете настроить автозапуск для запуска командного файла с вашего устройства, то вы можете использовать %~d0, чтобы получить назначенную букву диска.

0 голосов
/ 14 февраля 2012
cd /d %~dp0\ 

равно cd / d d: \ currentpath \

% 0 - ваш путь к пакетному файлу

...