Объявление: В ближайшее врема, возможность комментировать записи в блогах с учетной записью социальной сети ВКонтакте, будет удалена! В силу неприятия данной социально сети владельцем блога. Комментарии постараюсь сохранить.

Слава Україні! Ла-ла-ла-ла!...

Блог Морозов

Заметки, идеи, мысли...

Заметки на полях: Командные сценарии Windows

Автор: MadHead
MadHead
DevOps, Системный администратор, работающий как с Windows, так и UNIX системами.
Пользователей в сайте сейчас нет
Создано: Вторник, 07 Февраль 2012 в Windows

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

Даная запись будет в формате заметок на полях, т.е. общее описание и пример, для себя - чтоб не забыть...

Вывод внешней команды присвоить переменной

Присвоить переменной chost вывод комманды hostname (имя компьютера)
for /f "tokens=* delims=" %%A in  ('hostname') do set chost=%%A

Получить размер файла

Переменной fsize присвоить размер файла myfile.txt
for %%A in (myfile.txt) do set fsize=%%~zA

Получить модель компьютера (используя WMI)

Переменной model присвоить значение из WMI
for /f "tokens=2 delims='='" %%A in ('wmic computersystem get model /value') do set model=%%A

Убить процесс по имени

Принудительно (/f) убить процесс с именем (/im) iexplore.exe и всеми дочерними процессами (/t)
taskkill /f /im iexplore.exe /p

Проверить наличие процесса

Проверить наличе процесса с именем iexplore.exe
tasklist /nh /fi "IMAGENAME eq iexplore.exe"

Надежное копирование (robocopy)

Утилита для продвинутого копирования robocopy.exe начиная с Windows Vista и Windows Server 2008 входит в стандартную поставку, для более ранних версий дуступна в составе Windows Resouce Kit. Полную справку можно посмотреть введя "robocopy /?" Я же остановлюсь на основных и наиболее востребованых моментах (для меня во всяком случае)

Общий синтаксис комманды следующий: robocopy <src_path> <dst_path> <files> <copy_params>

src_path Путь к источнику файлов (папка)
dst_path Путь-назначение, куда файлы скопировать (папка)
files Имена (с подстановочными знаками) файлов, что нужно скопировать. По умолчанию "*.*"
copy_params Параметры копирования

Для копирования файлов по сети (на удаленные сервера) я использую следующую комманду:
robocopy d:\source_files \\remoteserver\servershare\destination_folder file_for_copy.txt /z /r:20 /w:10 /log+:logfile.log /tee /njs

КлючЗначение
/z Копирование файлов с возобновлением
/r:20 Колличество повторных попыток копирования при неудаче (по умолчанию 1 000 000)
/w:30 Время ожидания между повторными попытками в секундах (по умолчанию 20 секунд)
/log+:logfile.log Записать в файл лога состояние выполнение путем добавления в файл, если не указать "+", то файл будет перезаписан
/tee Выводить информацию и в консоль, и в файл лога
/njs Не выводить суммарную информацию о задании

Результат выполнения операции можно проверить с помощью переменной errorlevel есть много комбинаций, но я остановлюсь только на основных

КодРасшифровка
0 Ошибок не возникло. Копирование не выполнялось. Действий не требуется, файлы идентичны в искочнике и папке назначения.
1 Файлы скопированы успешно
2 Найдены дополнительные файлы (расширенная информация записывается в лог файл
4 Найдены несоответсвия
8 Ошибка копирования
16 Глобальная ошибка

Для копирования (обновления резервной копии) текущего состояния папки с изменяемыми файлами и их колличеством:
robocopy d:\source_files \\remoteserver\servershare\destination_folder /z /purge

Ключ /purge используется для удаления из папки назначения файлов, которые больше не существуют в папке источнике.

0 голоса(ов)

Не достаточно прав для добавления комментариев (только зарегистрированные пользователи)

Tekstkontent