В настоящее время я пишу script, который должен сопоставить сетевой диск с буквой Z
, я использую команду
net use z: \\path
, дело в том, что если пользователь уже использует эту букву, я не смогу ее сопоставить, есть ли способ проверить существование этого диска (z), и если он существует для его размонтирования и монтирования на другую букву и по-прежнему использовать диск Z
, который мне нужен для моего script, это часть установки, и она должна быть на диске Z.
Пакетная проверка наличия сетевого сетевого диска
Ответ 1
Вы можете проверить, установлен ли накопитель на IF EXIST Z:\
. Это должно работать:
if exist z:\ (
net use z: /delete
)
net use z: \\path
Ответ 2
Я использую следующий скриптовый бит для распаковки всех дисков:
:: First unmap all network drives
FOR /F "tokens=1,2,3" %%G IN ('net use^| Find "\\"') DO (
ECHO.Unmapping %%I from drive letter %%H
NET USE %%H /D > NUL
)
Что он делает? Пусть разделить это на
FOR/F "tokens = 1,2,3" %% G IN() DO() → будет перебирать множество, определенное между() и первым, вторым и третьим словом (любые пробелы используются как разделитель) станут доступными как %% G, %% H и %% я соответственно.
('...') выполнит команду... и передаст результат в цикл FOR
net use выведет что-то вроде этого:
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK M: \\diskstation\music Microsoft Windows Network
OK P: \\diskstation\home Microsoft Windows Network
OK V: \\diskstation\video Microsoft Windows Network
OK X: \\diskstation\photo Microsoft Windows Network
The command completed successfully.
Затем этот вывод передается в Find.exe(окна, эквивалентные grep), который ищет "\\".
Символ трубы | выполняется с помощью ^, поэтому cmd не выполняет его напрямую. Выход будет следующим:
OK M: \\diskstation\music Microsoft Windows Network
OK P: \\diskstation\home Microsoft Windows Network
OK V: \\diskstation\video Microsoft Windows Network
OK X: \\diskstation\photo Microsoft Windows Network
NET USE/D удалит сопоставление дисков для выбранного отображения
Ответ 3
Другим возможным способом может быть:
net use Z:
if %errorlevel% EQU 0 net use Z: /delete
net use Z: \\path
Ответ 4
Чтобы ответить на исходный вопрос, вы можете проверить, что Z уже сопоставлен, а затем повторно отобразить его на другую букву диска (например, y:), а затем сопоставить z с новым путем.
if exist z:\ (
for /F "tokens=1,2*" %%G in ('net use^|Find "\\"^|Find /I "z:"') do ( net use y: %%H )
net use z: /delete
)
net use z: \\path