Я хочу сделать командный файл, который открывает несколько программ, таких как установка драйверов, как эта

cd\
D:    (the usb drive letter )
start sound driver.exe
start  tochpad driver.exe

Просто от открытия командного файла с жесткого диска компьютера, а не USB-Pendrive.

И проблема в том, что usb меняет букву диска на каждом компьютере. Ребята, какая помощь здесь, пожалуйста?

2 ответа2

1

Поместите какой-нибудь идентификационный файл на диск и выполните итерации дисков. Если вы найдете указанный файл, вы знаете, что нашли Pendrive. Это перестанет работать, если указанный файл отсутствует.

Примером этого может быть: Обнаружение USB и копирование . на USB-накопитель с помощью пакетного скрипта

В соответствии с этим самым простым способом будет следующий файл с именем «USB.txt»:

@echo off
for %%d in (D: E: F: G: H: I: etc...) do (
   if exist %%d\USB.txt (
      echo USB at drive %%d connected
      %%d
      start sound driver.exe
      start tochpad driver.exe
   )
)

Для лучшего решения (ов) проверьте вопрос, который я связал. Выше уже есть несколько ловушек, так как кто-то может использовать A: и B: как обычные буквы диска или USB.txt может не присутствовать.

Если вы посмотрите на "исправленное" решение из этого вопроса, это будет:

@echo off
for /F "tokens=1*" %%a in ('fsutil fsinfo drives') do (
   for %%c in (%%b) do (
      for /F "tokens=3" %%d in ('fsutil fsinfo drivetype %%c') do (
         if %%d equ Removable (
            echo Drive %%c is Removable (USB^)
            %%c
            start sound driver.exe
            start tochpad driver.exe
         )
      )
   )
)

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

0

Я полагаю, что при нажатии (запуске) bat-файла из проводника в текущем каталоге указывается местоположение командного файла.

Таким образом, если ваш пакетный файл хранится и запускается из каталога на USB-накопителе, то вы уже находитесь в каталоге с такой буквой диска. Вам не нужно переключать диски, поэтому вам не нужно указывать это.

Так что просто используйте CD \ , чтобы убедиться, что вы находитесь на корневом уровне диска, на котором находитесь.

Вам также не нужно использовать букву диска для доступа к другим каталогам на том же диске. Если вы находитесь в папке c:\temp:

123\file.txt эквивалентно c:\temp\123\file.txt (без косой черты, поэтому путь добавляется к текущему пути)

\123\file.txt эквивалентно c:\123\file.txt ( начальная косая черта, поэтому путь добавляется только к букве диска (называется "корень")

Это может стать немного сложнее, если вы запускаете другие пакетные файлы из пакетного файла, которым также необходимо знать, в каком каталоге они находятся. Я не думаю, что вы находитесь в этой ситуации на основе вашего примера.

см. также ( https://stackoverflow.com/questions/16255184/ ) для более подробного обсуждения того, как найти текущий рабочий каталог.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .