Граф О'Манн (graf_o_mann) wrote,
Граф О'Манн
graf_o_mann

Category:

Как быстро и удобно подключить сетевой диск в Windows

18:59 25.10.2014
А сейчас, дети, я расскажу вам историю про одну умненькую собачку (по китайскому гороскопу), которой надоело каждый раз руками тащить курсор мыши к значку "Мой компьютер", щёлкать там правой кнопкой, выбирать "Подключить сетевой диск" и писать логин/пароль. Тогда этот кобель решил, по примеру грифа из мультика "Крылья ноги и хвосты", день потерять, зато потом за пять минут долететь :-)

В общем, решил я написать скриптик, который будет всё это делать за меня, а мне нужно будет только его запускать удобным способом. Способ такой есть, потом расскажу.

Кому интересно - follow the rabbit, а как же.


На моём "карманном" файловом сервере есть несколько расшаренных в сеть каталогов: distr (там, понятно, дистрибутивы разных программ, тысячи их), oleg_backup (это мой личный) и it (для сотрудников нашего отдела).

Поначалу у меня для подключения каждого каталога был отдельный скрипт, потому что и логины/пароли разные, и буквы для сетевых дисков назначались разные, чтобы не путаться. Но я тут подумал, в свободное от отдыха время, и придумал как свести всё это в один файл. И, как мне кажется, получилось. Правда, ещё не проверял, как оно работает, дома же сочинял.

Скрипт называется connect.cmd и ему для запуска нужны два параметра - идентификатор сетевого каталога и ещё один, чтобы понимать - подключать или отключать сетевой диск. То есть команда запуска выглядит так: connect.cmd distr on (подключает каталог distr) или connect.cmd distr off (отключает каталог distr).


@ECHO OFF
SETLOCAL

REM Проверка подключенных сетевых дисков, если есть - вывести сообщение и выйти
IF EXIST Z:\nul (
SET CONNECTED_DRIVE=Z:
GOTO ERROR1
)
IF EXIST O:\nul (
SET CONNECTED_DRIVE=O:
GOTO ERROR1
)
IF EXIST Y:\nul (
SET CONNECTED_DRIVE=Y:
GOTO ERROR1
)

REM Установка буквы сетевого диска в зависимости от параметра %1
IF %1 EQU install (
SET %DRIVE%=Z:
GOTO INSTALL
)
IF %1 EQU distr (
SET %DRIVE%=Z:
GOTO DISTR
)
IF %1 EQU oleg (
SET %DRIVE%=O:
GOTO OLEG
)
IF %1 EQU it (
SET %DRIVE%=Y:
GOTO IT
)

REM И так всё ясно :-)
IF %2 EQU off GOTO OFF

REM Если введены неправильные параметры (то есть не совпали ни с одним IF) - сообщение об ошибке и выход
ECHO Please enter correct parameters
PAUSE
GOTO END

REM Установка переменных в зависимости от входных параметров
:INSTALL
SET DIRECTORY=distr
SET USERNAME=install
SET PASSWORD=install
GOTO CONNECT

:DISTR
SET DIRECTORY=distr
SET USERNAME=distr
SET PASSWORD=distr
GOTO CONNECT

:OLEG
SET DIRECTORY=oleg_backup
SET USERNAME=oleg
SET PASSWORD=password
GOTO CONNECT

:IT
SET DIRECTORY=it
SET USERNAME=it
SET PASSWORD=password
GOTO CONNECT

REM Подключение сетевого диска с использованием выше установленных переменных
:CONNECT
NET USE %DRIVE% \\192.168.0.1\%DIRECTORY% /user:%USERNAME% %PASSWORD% /persistent:no
START C:\totalcmd\totalcmd.exe %DRIVE%\
GOTO END

:OFF
IF EXIST %DRIVE%\nul NET USE %DRIVE% /d /y
GOTO END

:ERROR1
ECHO Drive %CONNECTED_DRIVE% already connected.
ECHO Please close any documents at drive %CONNECTED_DRIVE%, disconnect it and try again.
PAUSE
GOTO END

:END

На мой взгляд всё должно работать.

Теперь о том, как со всем этим взлететь как это удобно запускать. Есть небольшая, но очень удобная программа Type And Run, которая по нажатию горячих клавиш выводит окошко "консоли", в котором надо написать команду. Точнее, алиас команды, её "творческий псевдоним". Алиасы создаются в редакторе алиасов, как ни удивительно. Вот там и пишем примерно следующее:
  • Сначала нажать "Создать новый алиас"
  • В поле "Имя алиаса" написать, скажем, "distrON"
  • Вписать (а лучше найти кнопкой "обзор", такая с тремя точками) путь до скрипта, где там он будет лежать. У меня обычно D:\program\cmd\connect.cmd
  • В поле "Параметры" вписать distr on
  • Нажать ОК

Подобным образом создать алиасы "distrOFF" (в параметрах написать distr off), "installON", "installOFF" и остальные.

И всё! Теперь, вызвав консольку нажатием горячих клавиш, начинаем писать там "di", а программа сама подставляет из списка алиасов похожий, например, "distrOFF". Нам нужен "distrON"? Не проблема - нажимаем TAB, и программа начинает перебор алиасов, начинающихся с "di".

В общем, это дольше рассказывать, надо пользоваться. Я уже давно на все свои компьютеры ставлю Type and Run в обязательном порядке и практически забыл про запуск программ из меню Пуск или ярлыками с Рабочего стола. Быстрее нажать Ctrl+~ (я вешаю вызов консоли на это сочетание), набрать "cr", программа подставит "chrome". Нажимаю Enter - запускается Google Chrome. Набираю "th" - подставляется Thunderbird. Ну, и так далее.

А ещё она умеет быть калькулятором! То есть если в консольке Type and Run написать "2+2*2" и нажать Enter, то программа посчитает и напишет... Правильно напишет, в отличие от калькулятора Windows.

UPDATE

Так, всё вышенаписанное - выкрасить, высушить и выбросить! Не, идея была правильная, но реализация таки оказалась с ошибками. Правильный, проверенный в работе скрипт вот:

@ECHO OFF
SETLOCAL

IF "%2" == "" GOTO MISSING_PARAMETERS
IF %2 == on GOTO ON_SECTION
IF %2 == off GOTO OFF_SECTION
GOTO MISSING_PARAMETERS



REM === Start ON_SECTION ===
:ON_SECTION
REM Проверка подключенных сетевых дисков, если есть - вывести сообщение и выйти
IF EXIST Z:\nul (
	SET DRIVE=Z:
	GOTO ERROR1
	)
IF EXIST O:\nul (
	SET DRIVE=O:
	GOTO ERROR1
	)
IF EXIST Y:\nul (
	SET DRIVE=Y:
	GOTO ERROR1
	)

REM Установка буквы сетевого диска в зависимости от параметра %1
IF "%1" == "" GOTO MISSING_PARAMETERS
IF %1 == install (
    SET DRIVE=Z:
	GOTO INSTALL
	)
IF %1 == distr (
	SET DRIVE=Z:
	GOTO DISTR
	)
IF %1 == oleg (
	SET DRIVE=O:
    GOTO OLEG
	)
IF %1 == it (
    SET %DRIVE%=Y:
	GOTO IT
	)
REM Если введены неправильные параметры (то есть не совпали ни с одним IF)  - сообщение об ошибке и выход
GOTO MISSING_PARAMETERS

REM Установка переменных в зависимости от входных параметров
:INSTALL
SET DIRECTORY=distr
SET USERNAME=install
SET PASSWORD=install
GOTO CONNECT

:DISTR
SET DIRECTORY=distr
SET USERNAME=distr
SET PASSWORD=distr
GOTO CONNECT

:OLEG
SET DIRECTORY=oleg_bkup
SET USERNAME=oleg
SET PASSWORD=password
GOTO CONNECT

:IT
SET DIRECTORY=it
SET USERNAME=it
SET PASSWORD=password
GOTO CONNECT

REM Подключение сетевого диска с использованием выше установленных переменных
:CONNECT
NET USE %DRIVE% \\192.168.0.1\%DIRECTORY% /user:%USERNAME% %PASSWORD% /persistent:no
START C:\totalcmd\totalcmd.exe %DRIVE%\
GOTO END
REM === End ON_SECTION ===



REM === Start OFF_SECTION ===
:OFF_SECTION
IF "%1" == "" GOTO MISSING_PARAMETERS
IF %1 == install (
    SET DRIVE=Z:
	GOTO OFF
	)
IF %1 == distr (
	SET DRIVE=Z:
	GOTO OFF
	)
IF %1 == oleg (
	SET DRIVE=O:
    GOTO OFF
	)
IF %1 == it (
    SET %DRIVE%=Y:
	GOTO OFF
	)
GOTO MISSING_PARAMETERS

:OFF
IF EXIST %DRIVE%\nul (
   NET USE %DRIVE% /d /y
   ) ELSE (
   ECHO Диск %DRIVE% в настоящий момент не подключен.
   PAUSE
   )
GOTO END
REM === End OFF_SECTION ===



REM === Start ERROR_SECTION ===
:MISSING_PARAMETERS
ECHO Для корректной работы скрипту должны быть переданы ДВА параметра!
ECHO Первый параметр может быть: "distr", "install", "oleg" или "it".
ECHO Второй параметр должен быть либо "on", либо "off".
ECHO Параметры вводятся без кавычек.
ECHO .
PAUSE
GOTO END

:ERROR1
ECHO Диск %DRIVE% уже существует.
ECHO Пожалуйста, закройте все открытые файлы на диске %DRIVE%, отключите его, и повторите попытку.
PAUSE
GOTO END
REM === End ERROR_SECTION ===


:END

оригинал записи в блоге Graf O'Mann



Яндекс.Метрика






Tags: windows, компьютер, лайфхак, программы, работа, техническое, умничаю
Subscribe

  • Ну, что там на Арракисе?

    22:20 18.09.2021 Главная и, пожалуй, единственная моя претензия к фильму "Дюна" - это только половина фильма! Два с половиной часа! А история даже…

  • Похоже, у нас теперь две кошки

    02:02 15.07.2021 Я не планировал в ближайшем будущем заводить дома ещё зверушек, но, в принципе, понимал, что когда-нибудь это случится. Вылезет…

  • Кто жужжит в кустах

    16:06 06.06.2021 Я тут проходил мимо цветущего шиповника и услышал как кусты жужжат. Остановился посмотреть - жужжали, конечно, не сами кусты,…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments