В общем, решил я написать скриптик, который будет всё это делать за меня, а мне нужно будет только его запускать удобным способом. Способ такой есть, потом расскажу.
Кому интересно - 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
На мой взгляд всё должно работать.
Теперь о том,
- Сначала нажать "Создать новый алиас"
- В поле "Имя алиаса" написать, скажем, "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
Комментариев нет :
Отправить комментарий