Меняем шлюз по умолчанию из командной строки

Бывают ситуации, когда для автоматизации сетевых соединений необходимо автоматически менять параметры соединений. В этой короткой заметке хочу отобразить как быстро и просто можно из командной строки Windows поменять шлюз по умолчанию в сетевом соединении.

Для этого есть команда netsh. Читать далее

ШПАРГАЛКА. Команды Unix — Linux

Полезные команды Linux тут
Перепечатаю на случай исчезновения источника

Файловые команды:

ls – список файлов и каталогов
ls -al – форматированный список со скрытыми каталогами и файлами
cd dir – сменить директорию на dir
cd – сменить на домашний каталог
pwd – показать текущий каталог
mkdir dir – создать каталог dir
rm file – удалить file
rm -r dir – удалить каталог dir
rm -f file – удалить форсированно file
rm -rf dir – удалить форсированно каталог dir
cp file1 file2 – скопировать file1 в file2
cp -r dir1 dir2 – скопировать dir1 в dir2; создаст каталог dir2, если он не существует
mv file1 file2 – переименовать или переместить file1 в file2. если file2 существующий каталог — переместить file1 в каталог file2
ln -s file link – создать символическую ссылку link к файлу file
touch file – создать file
cat > file – направить стандартный ввод в file
more file – вывести содержимое file
head file – вывести первые 10 строк file
tail file – вывести последние 10 строк file
tail -f file – вывести содержимое file по мере роста, начинает с последних 10 строк
————————————————————————————————————————————————————
Читать далее

Как создать файл с именем равным текущей дате и времени

Чтобы создать из командной строки файл с именем равным текущей дате и времени создадим cmd файл с таким содержимым:

rem @echo off

set dd=%DATE%
set tt=%TIME%

set /a ddd=%dd:~0,2%
IF %ddd% LSS 10 (
  SET day=0%ddd%) else (
  SET day=%ddd%)
set month=%dd:~3,2%
set year=%dd:~6,4%

set /a ttt=%tt:~0,2%

IF %ttt% LSS 10 (
  SET hour=0%ttt%) else (
  SET hour=%ttt%)

SET minute=%tt:~3,2%
SET sec=%tt:~6,2%

echo %day% %month% %year% %hour% %minute% %sec%

copy nul %day%%month%%year%_%hour%%minute%%sec%.txt

Необходимо помнить, что получение даты и времени зависит от региональных настроек Windows. Поэтому первая строка закомментирована для возможности смотреть на результат каждой команды.
Рассмотрим команды.

  • В переменные dd и tt получаем текущую дату и время.
  • В переменную ddd из переменной с датой dd получаем теекущее число. Команда %dd:~0,2% значит взять из переменной dd 2 символа с начала строки (0 это первый символ строки). Например, на моем компьютере числа всегда двучначные и я не нуждаюсь в такой проверке и эта конструкция у меня заменяется на команду set day=%dd:~0,2%
  • Далее с 7 по 9 строку кода идет проверка текущего числа. Если число меньше 10, то начале числа добавляем символ 0. Это надо на случай если у нас дата выглядит например так: 1.12.2010. Чтобы все составляющие даты были одинаковой длины. Тут же получаем готовую переменную day, в которой хранится значение текущего числа
  • Строка 10. В переменную month из dd получаем текущий месяц. Берем два символа, начиная с третьего. Здесь можно так же как и с числом сделать проверку на меньше или больше 10. Но у меня почему-то на всех компах месяц всегда двузначный. Но этот момент надо учитывать.
  • Строка 11. В переменную year из dd получаем текущий год. Для этого берем 4 символа, начиная с шестого. Вообще с какого символа брать и сколько символов надо брать, легко отследить после команд из 3 и 4 строк кода. После выполнения cmd файла смотрим какие строки выдает ОС и отсчитываем с какого символа идет число, месяц и год.
  • Со строки 13 по 20 описаны аналогичные действия по получению текущего времени в переменные hour, minute и sec.

Приготовления закончены, команда в строке 22 выводит полученные значения. Если всё выводится корректно, то можно приступить к созданию файла.
Команда

copy nul %day%%month%%year%_%hour%%minute%%sec%.txt

создает пустой текстовый файл 09092010_102428.txt
Для создания архивов я обычно делаю чтобы год был в начале имени файла, затем месяц, а уже потом число. Это удобно для сортировки архивов.

copy nul %year%%month%%day%_%hour%%minute%%sec%.txt

Результат такой команды: 20100909_102441.txt

Как узнать размер и дату файла из командной строки

Супер мини статья :)

Простейший способ получить размер файла из командной строки Windows:

for %I in (file.ext) do echo %~zI

из хелпа по команде For в Cmd:


%~zI - переменная %I расширяется до размера файла

Аналогично для даты (модификации) файла:

for %I in (file.ext) do echo %~tI

из хелпа по команде For в Cmd:


%~tI - переменная %I расширяется до даты /времени файла

А вообще команда for /? очень полезная.

Отправка электронного письма из командной строки Windows

Отправка электронного письма из командной строки Windows

Возникла необходимость отправлять данные через почтовый сервис, но чтобы не загружать пользователя ненужными действиями решил прибегнуть к консольной утилите для отправки e-mail под Windows — blat
Т.к. для отправки письма по протоколу SMTP без аутентификации уже не обойтись, то я для себя составил такой формат командной строки и вывел его в пакетный cmd файл:

blat.exe -server server.ru -f e-mail-from@server.ru -u e-mail-from@server.ru -pw pass  -to e-mail-to@server.ru -subject SUBJ -body "Текст сообщения" -attach FILE

Немного пояснений:

  • -server server.ru — сервер Исходящей почты. Несмотря на то, что мы отправляем из командной строки, но сервер, с которого будет уходить письмо, должен быть!
  • -f e-mail-from@server.ru — адрес отправителя. Как и в случае с сервером. Письмо должно быть от кого-то ;)
  • -u e-mail-from@server.ru — имя пользователя (логин) для сервера Исходящей почты. Используется для упомянутой выше SMTP аутентификации. В моем случае логин должен состоять из имени пользователя на сервере (то есть имя@сервер), это зависит от сервера. На других серверах может быть просто e-mail-from
  • -pw pass — пароль для той же аутентификации.
  • -to e-mail-to@server.ru — адрес получателя
  • -subject SUBJ — тема письма. Должна быть в кавычках, если есть пробелы!
  • -body "Текст сообщения" — текст письма. Должен быть в кавычках, если есть пробелы!
  • -attach FILE — собственно то, ради чего это всё я затеял. Путь к файлу и имя файла FILE :)

Все имена серверов и электронные адреса вымышлены. Совпадения случайны.
Если у кого-нибудь есть дополнения или уточнения по этому вопросу, вэлкам в каменты.

ODBC из командной строки Windows

ODBC алиас из командной строки Windows
В этой статье хочу рассказать как просто создать ODBC из командной строки в Windows XP.
ODBC строки подключения бывают Пользовательские, то есть доступны для текущего пользователя; Системные — доступны для всех пользователей компьютера и Файловые. Я использую системные. Для чего вообще нужно создавать из командной строки? Ведь можно просто зайти в Панель управления — Администрирование — Источники данных (ODBC) и создать нужное соединение с базой вручную. Да, совершенно верно, можно и так. Но! Если у вас много компьютеров? А если вы передаете свой дистрибутив программы заказчику на самостоятельную установку? Проще делать это из командной строки.
Читать далее

Как организовать цикл в bat или cmd файле

Бывают ситуации, когда нужно выполнять какую-нибудь команду несколько раз, причем количество запусков заранее известно.
Для этого можно организовать цикл с помощью команды FOR.
Вот что написано в справке по этой команде:


FOR %переменная IN (набор) DO команда [параметры]

%переменная Подставляемый параметр.
(набор) Набор, состоящий из одного или нескольких файлов.
Допускается использование подстановочных знаков.
команда Команда, которую следует выполнить для каждого файла.
параметры Параметры и ключи для указанной команды.

В пакетных файлах для команды FOR используется запись
%%переменная вместо %переменная. Имена переменных
учитывают регистр букв (%i отличается от %I).

полную справку можно получить, вызвав

FOR /?

Итак, нам нужен цикл с определенным количеством итераций, это делается с помощью ключа /L


FOR /L %переменная IN (начало,шаг,конец) DO команда [параметры]

Набор раскрывается в последовательность чисел с заданными началом, концом и шагом приращения. Так, набор (1,1,5) раскрывается в (1 2 3 4 5), а набор (5,-1,1) заменяется на (5 4 3 2 1)

Например, мне недавно понадобилось пропинговать 3 подсеть, cmd файл с командой выглядит так:

FOR /L %%i IN (1,1,255) DO ping 192.168.3.%%i >>ping.log