Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] используя net use написать CMD скрипт подключения сетевого диска (http://forum.oszone.net/showthread.php?t=231465)

Den 28-03-2012 10:20 1888339

используя net use написать CMD скрипт подключения сетевого диска
 
Подскажите,пожалуйста, как написать в CMD, используя net use, скрипт подключения сетевого диска с присвоением названия диска (вместо буквы, например Disk_Sem) и проверкой на существование подключения с такой буквой.
Если есть подключение - заменить на возможную свободную букву.
заранее благодарен
всем хорошего дня!

Anonymоus 28-03-2012 10:47 1888351

Возможно, вам бы стоило использовать поиск по форуму, эта тема не раз уже поднималась.
Вот вариант с генерацией 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"


Den 28-03-2012 12:34 1888427

большое спасибо за оперативность вечерком попробую запустить.
удачи

El Sanchez 30-03-2012 15:22 1890075

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
)


Den 30-03-2012 19:23 1890267

El Sanchez, добрый вечер!
а это для какой системы написано?
под 7 пойдет или нужно менять системные пути?

спасибо

Den 30-03-2012 19:57 1890289

Если нужно что то поменять, то напишите, пожалуйст,а поконкретнее где и что. Ума у самого не хватает (надеюсь пройдет со временем).
Спасибо

El Sanchez 30-03-2012 21:21 1890329

Цитата:

Цитата Den
под 7 пойдет или нужно менять системные пути? »

Den, проверял под XP и 7.
Цитата:

Цитата Den
Если нужно что то поменять, то напишите, пожалуйст,а поконкретнее где и что. »

Den, Менять нужно только сетевой путь (переменная UNC) и метку (переменная Label) в начале скрипта.

Foreigner 30-03-2012 22:10 1890361

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 - отключает сетевой диск и возвращает текущую директорию в исходное состояние

Den 30-03-2012 22:15 1890365

очень интересно !
пробую
спасибо!

Den 30-03-2012 22:32 1890379

Просто потрясающе!
Код:
@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 1890387

Цитата:

каким образом можно дать имя этому диску, например MyDisk
Не понял. Где должно быть это название? Если про метку диска, то она наверное не будет работать с сетевыми дисками.
Цитата:

echo umounting \\live.sysinternals.com\tools
что это?
Просто вывод текста, симуляция какого-то действия в контексте батника-примера

Den 30-03-2012 23:08 1890412

Вложений: 1
А как будет в ситуации когда диск\\live.sysinternals.com\tools будет подключен (например, при работе policy), но в виде, как на рисунке, т.е без присвоенной буквы. Как в этом случае можно проверить данное подключение \\live.sysinternals.com\tools и если, оно представлено в таком виде,как на вложенном рисунке:
или так

Status Local Remote Network

---------------------------------------------------------------------------
OK \\live.sysinternals.com\tools Microsoft Windows Network
задать ему букву, которая еще не занята


спасибо за такие дельные и точные ответы!

Sisin 16-06-2016 15:44 2643213

Код:

@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)"???

Iska 16-06-2016 16:22 2643222

Sisin, почитайте, например, здесь: CMD/BAT - [решено] Скрипт - подключить сетевой диск и назначить ему имя..

Sisin 16-06-2016 16:45 2643227

Цитата:

Цитата Iska
Sisin, почитайте, например, здесь »

Так там же VBS и CMD. Я правильно понимаю, что с помощью BAT нет решения???

Sisin 18-10-2016 15:52 2679425

Сам нашел решение как присвоить имя сетевому диску с помощью bat...

Код:

@echo off
if exist y:\ (
net use /delete Y:
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##webdav.yandex.ru@SSL#DavWWWRoot" /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#DavWWWRoot" /v _LabelFromReg /t REG_SZ /d "Яндекс.Диск" /f
)
Exit



Время: 05:44.

Время: 05:44.
© OSzone.net 2001-