Показать полную графическую версию : [решено] используя net use написать CMD скрипт подключения сетевого диска
Подскажите,пожалуйста, как написать в CMD, используя net use, скрипт подключения сетевого диска с присвоением названия диска (вместо буквы, например Disk_Sem) и проверкой на существование подключения с такой буквой.
Если есть подключение - заменить на возможную свободную букву.
заранее благодарен
всем хорошего дня!
Anonymоus
28-03-2012, 10:47
Возможно, вам бы стоило использовать поиск по форуму, эта тема не раз уже поднималась.
Вот вариант с генерацией vbs-скрипта, из cmd напрямую имя диска назначить нельзя. Имя и сетевой путь замените на свои.
@Echo Off
For %%A In (Z Y X W V U T S R Q P O N M L J I H G F E D C) Do (
If Not Exist "%%A:\" Set Disk=%%A&GoTo Jump
)
:Jump
>"%Temp%\netdrive.vbs" (
Echo On Error Resume Next
Echo Set objWshNetwork = CreateObject^( "WScript.Network" ^)
Echo Set objShell = CreateObject^("Shell.Application"^)
Echo MapDrive "%Disk%:", "\\inquisitor\bkup\sqldumps", "Базы"
Echo Sub MapDrive^(strDrive, strPath, strName^)
Echo On Error Resume Next
Echo objWshNetwork.RemoveNetworkDrive strDrive, vbTrue, vbTrue
Echo objWshNetwork.MapNetworkDrive strDrive, strPath
Echo objShell.NameSpace^(strDrive^).Self.Name = strName
Echo End Sub
)
Call "%Temp%\netdrive.vbs"
Del "%Temp%\netdrive.vbs"
большое спасибо за оперативность вечерком попробую запустить.
удачи
El Sanchez
30-03-2012, 15:22
Den, вариант №2
@Echo Off
SetLocal
Set UNC=\\10.29.9.200\distr
Set Label=distr
For /F "Tokens=2 Delims==" %%A In ('WMIC path Win32_MappedLogicalDisk WHERE ProviderName^=^'%UNC:\=\\%^' Get Name /Value 2^>nul') Do (
Call Net Use %%A /delete /y 1>nul 2>&1
Net Use * %UNC% 1>nul 2>&1
Reg Add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\%UNC:\=#%" /v _LabelFromReg /d "%Label%" /f 1>nul 2>&1
)
El Sanchez, добрый вечер!
а это для какой системы написано?
под 7 пойдет или нужно менять системные пути?
спасибо
Если нужно что то поменять, то напишите, пожалуйст,а поконкретнее где и что. Ума у самого не хватает (надеюсь пройдет со временем).
Спасибо
El Sanchez
30-03-2012, 21:21
под 7 пойдет или нужно менять системные пути? »
Den, проверял под XP и 7.
Если нужно что то поменять, то напишите, пожалуйст,а поконкретнее где и что. »
Den, Менять нужно только сетевой путь (переменная UNC) и метку (переменная Label) в начале скрипта.
Foreigner
30-03-2012, 22:10
Den,
Для подключения сетевого диска не задумываясь о букве можно:
net use * \\live.sysinternals.com\tools
Подключит сетевой диск на первую свободную букву с конца алфавита (z....a). Для сохранения буквы диска, все можно завернуть в for:
@echo off
setlocal
for /f "tokens=2" %%i in (' net use * \\live.sysinternals.com\tools ') do set "mountpoint=%%i" && goto:next
echo error
goto:eof
:next
echo doing something on %mountpoint%
echo umounting \\live.sysinternals.com\tools
net use /delete %mountpoint%
Если буква диска не важна для дальнейших действий ( хоть она и есть, назначается опять же по принципу (z...a) ), и все решается в пределах одного батника, то можно воспользоваться командой pushd:
@echo off
pushd \\live.sysinternals.com\tools || echo error && goto:eof
echo doing something
popd
pushd - подключает сетевой диск и делает директорию на сетевом диске текущей
popd - отключает сетевой диск и возвращает текущую директорию в исходное состояние
очень интересно !
пробую
спасибо!
Просто потрясающе!
Код:
@echo off
setlocal
for /f "tokens=2" %%i in (' net use * \\live.sysinternals.com\tools ') do set "mountpoint=%%i" && goto:next
echo error
goto:eof
:next
echo doing something on %mountpoint%
echo umounting \\live.sysinternals.com\tools
net use /delete %mountpoint%
это работает и подключает диск как нужно!
но тут же вопрос : каким образом можно дать имя этому диску, например MyDisk, другими словами вместо
tools (\\live.sysinternals.com) было бы MyDisk(\\live.sysinternals.com)
как то вот так
и еще
echo umounting \\live.sysinternals.com\tools
что это?
огромное спасибо!
Foreigner
30-03-2012, 22:39
каким образом можно дать имя этому диску, например MyDisk
Не понял. Где должно быть это название? Если про метку диска, то она наверное не будет работать с сетевыми дисками.
echo umounting \\live.sysinternals.com\tools
что это?
Просто вывод текста, симуляция какого-то действия в контексте батника-примера
А как будет в ситуации когда диск\\live.sysinternals.com\tools будет подключен (например, при работе policy), но в виде, как на рисунке, т.е без присвоенной буквы. Как в этом случае можно проверить данное подключение \\live.sysinternals.com\tools и если, оно представлено в таком виде,как на вложенном рисунке:
или так
Status Local Remote Network
---------------------------------------------------------------------------
OK \\live.sysinternals.com\tools Microsoft Windows Network
задать ему букву, которая еще не занята
спасибо за такие дельные и точные ответы!
@echo off
if exist y:\ (
net use /delete Y:
) else (
"%windir%\system32\net.exe" use Y: https://webdav.yandex.ru /user:"login" "password"
)
Exit
Подскажите, пожалуйста, что надо добавить в batник, чтобы подключаемый диск назывался "Яндекс.Диск", а не "DavWWWRoot (\\webdav.yandex.ru@SSL)"???
Sisin, почитайте, например, здесь: CMD/BAT - [решено] Скрипт - подключить сетевой диск и назначить ему имя. (http://forum.oszone.net/showthread.php?t=148958).
Sisin, почитайте, например, здесь »
Так там же VBS и CMD. Я правильно понимаю, что с помощью BAT нет решения???
Сам нашел решение как присвоить имя сетевому диску с помощью bat...
@echo off
if exist y:\ (
net use /delete Y:
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##webdav.yandex.ru@SSL#DavWWWRo ot" /f
) else (
"%windir%\system32\net.exe" use Y: https://webdav.yandex.ru /user:"login" "password"
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##webdav.yandex.ru@SSL#DavWWWRo ot" /v _LabelFromReg /t REG_SZ /d "Яндекс.Диск" /f
)
Exit
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.