Как я могу извлечь букву диска для нового подключенного диска в байте?

Я создаю простой сценарий резервного копирования из командной строки, чтобы использовать robocopy для зеркалирования «важных» вещей в моем ящике NAS. Я бы предпочел не полагаться на жестко закодированную букву диска для этого ящика NAS. В сценарии я хотел бы сопоставить временную букву диска, скопировать соответствующие файлы и утилизировать сопоставленный диск. Я не хочу предполагать, что если эта буква диска уже нанесена на карту, она указывает на то место, которое я ожидаю. Я также не хочу «предполагать», что некоторая буква диска доступна, когда я сопоставляю диск, таким образом, ведущий «*».

     Net use * \\ nasbox \ sharename пароль / пользователь: имя пользователя / постоянный: нет

Каков правильный путь в моем сценарии .bat для извлечения буквы этого диска для использования в последующих командах? Я думал, что я мог бы скомпоновать некоторый вариант синтаксического разбора «для», но я также подозреваю, что должен быть более простой путь, чем эзотерический синтаксис.

     C: \> net use * \\ nasbox \ sharename пароль / пользователь: имя пользователя / постоянный: нет
     Привод Z: теперь подключен к \\ nasbox \ sharename.

     Команда успешно завершена.


     C: \>

После того, как у меня есть сопоставленная буква диска, я хотел бы следить за командами по строкам:

     Robocopy C: \ path \ to \ important \ stuff% NewDrive% \ путь \ to \ backup / MIR / Z

  • Выбор прямоугольного текста в командной строке
  • Вернитесь к предыдущей директории в оболочке
  • Цикл командной строки для запуска команды для всех файлов в каталоге (плюс вспомогательные каталоги, если возможно
  • Завершение вкладок, нечувствительных к регистру, в Bash
  • CLI способ удаления обновления Windows?
  • Mac OSX Terminal cmd / script для отображения секторов HDD в ожидании выделения
  • 2 Solutions collect form web for “Как я могу извлечь букву диска для нового подключенного диска в байте?”

    Используйте команды pushd и popd .

    pushd \\server\share создаст временный диск (начиная с Z: и возвращаясь назад, пока не найдет доступную букву) и войдет в него. Когда вы закончите, popd удалит временный диск и вернет вас туда, где вы были.

     C:\Users\Snark>pushd /? Stores the current directory for use by the POPD command, then changes to the specified directory. PUSHD [path | ..] path Specifies the directory to make the current directory. If Command Extensions are enabled the PUSHD command accepts network paths in addition to the normal drive letter and path. If a network path is specified, PUSHD will create a temporary drive letter that points to that specified network resource and then change the current drive and directory, using the newly defined drive letter. Temporary drive letters are allocated from Z: on down, using the first unused drive letter found. C:\Users\Snark>popd /? Changes to the directory stored by the PUSHD command. POPD If Command Extensions are enabled the POPD command will delete any temporary drive letter created by PUSHD when you POPD that drive off the pushed directory stack. 

    И, для потомков, вот приблизительный шаблон того, как все это работает. Еще раз спасибо @Snark и @Neal.

    Вот мой оригинальный шаблон, используя pushd / popd.

         @echo off
    
         :: Предоставление учетных данных для доли NAS.
         Net use \\ nasbox \ sharename пароль / пользователь: имя пользователя / постоянный: нет
         :: Убедитесь, что это сработало.
         Если ERRORLEVEL 1 echo NET USE возвращается% ERRORLEVEL% && goto: EOF
    
         :: Используйте pushd для подачи буквы диска для общей папки.
         Pushd \\ nasbox \ sharename
    
         :: Скопируйте файлы для резервного копирования.  Промыть и повторить.
         Robocopy C: \ path \ to \ important \ stuff. \ Path \ to \ backups / MIR / Z
    
         :: Отпустите букву временного диска.
         POPD
    
         :: При желании отмените учетные данные, пока этот ресурс не используется.
         Net use \\ nasbox \ sharename / delete
    

    Обратите внимание, что с моим откровением из комментария @ Neal мое конкретное приложение pushd / popd здесь не нужно, и форма команды robocopy просто изменяется на:

         Robocopy C: \ path \ to \ important \ stuff \\ nasbox \ sharename \ path \ to \ backups / MIR / Z
    

    Не нужно проголосовать за это. Просто хотел, чтобы это было здесь как хлебная крошка для тех, кто это нашел позже.

    Давайте будем гением компьютера.