воскресенье, 25 сентября 2011 г.

Пишем батники (bat, cmd)


Windows Command LineПростые вещи делаются простыми инструментами. Но иногда решение элементарного вопроса с помощью простого инструмента лежит не на поверхности, но это не повод для расстройства.

В этой статье поговорим о батниках они же bat-файлы, cmd-файлы или просто скрипты для  командного процессора Windows cmd.exe.

Постараюсь без банальностей неплохой урок есть тут: http://www.rsdn.ru/article/winshell/batanyca.xml

Я же от себя буду добавлять здесь всякие полезности, которые могут пригодиться на практике.



Буду не многословен. Хотите подробней, все очень просто:
cmd /?
if /?
for /?

и т.д. и т.п....

Пишите безопасные скрипты
Неправильно:
cd /d C:\temp
del *.*

Правильно:
del C:\temp\*.*

Что произойдет в первом случае, если каталог C:\temp отсутствует?
Никогда не рассчитывайте на то, что все команды отработают правильно, особенно, если вы собираетесь делать что-то деструктивное.

Смена каталога на тот, где находится сам bat-ник

pushd %~dp0
bla-bla-bla
popd

где bla-bla-bla - это сам скрипт, а popd - вернет в каталог, который был в момент вызова командного сценария.

%~dp0 - это я беру полное имя скрипта из переменной %0 и вырезаю из него диск и путь. Подробности по обрезанию параметров смотри в call /?



Проверка на существование файла в каталоге

dir /b/a-d/s "C:\test\in\*.*" >nul 2>nul && echo Good! || echo Bad!
тут 2>nul подавляет вывод на экран ошибок, а >nul подавляет стандартный вывод команды dir.
Тут вся хитрость заключается в вычислении логических выражений. Если dir выполнился без ошибок (нашел файлы и вернул true), то требуется выполнить команду echo Good!, в противном случае выполняется echo Bad!




Продолжение следует... :)


2 комментария:

  1. Здравствуйте, помогите написать батник новечку.


    Самостоятельное решение проблемы

    Чтобы решить проблему, измените Тип запуска для службы сообщений на Авто и запустите ее. Для этого выполните указанные ниже действия.
    Запустите проводник.
    На левой панели щелкните правой кнопкой мыши ссылку Мой компьютер и выберите команду Управление.
    На левой панели окна Управление компьютером разверните узел Службы и приложения и выберите элемент Службы.
    На правой панели дважды щелкните службу сообщений.
    В диалоговом окне Служба сообщений (локальный компьютер) откройте вкладку Общие.
    На вкладке Общие в списке Тип запуска выберите вариант Авто и нажмите кнопку Применить.
    В разделе Состояние нажмите кнопку Пуск, а затем — ОК.

    Как сделать это в батнике???
    И могу ли я через свой комп сделать тоже самое другим компам по лок. сети

    ОтветитьУдалить