Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 9

Автор: vu1tur
Дата сообщения: 04.09.2010 16:45
Задачи на bat-файлах 9
(часть 1, часть 2, часть 3, часть 4, часть 5, часть 6, часть 7, часть 8)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.


Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!

Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.

Для перекодирования кирилицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы


Дополняем шапку: добавляем готовые решения, полезные ссылки.

Примечание: Большие куски кода заключайте в тэг [no][more][/no]

Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии

[more=Полезные ссылки]

[b]Полезные ссылки:


· Cmd. Описание от разработчиков (англ.) (рус.)
· Урок bat-аники (для начинающих)
· Командная строка и сценарии Windows - уроки
· Библиотека функций для командных файлов
· Использование ansi.sys
· Справка по командам в виде Html
· Команды RunDll32
· Пример - получение и обработка списка пользователей
· Пример перехода из 32-битной версии cmd.exe в 64-битную
[/more][/b]


[more=Полезные утилиты]
[b]Полезные утилиты:


· Утилтиа-модуль (VBS-скрипт) для Internet Explorer - Позволяет копировать выделенный текст без пробелов на конце. Особенно полезно на руборде

· base64 - кодирует/раскодирует файл в/из base64
· blat - отправка почты из консоли
· CLCC - консольный калькулятор
· cmdow - изменение параметров и видимости дос-окна
· cnic - включает/выключает сетевой интерфейс
· crc32 - утилита для подсчета контрольных сумм (только CRC)
· curl - передача и прием файлов, используя URL синтаксис
· curtime - утилита для обработки времени в скриптах
· delbyown - поиск файлов, созданных определенным пользователем, на NTFS разделе
· devcon - включение, выключение, удаление и т.д. устройств из Диспетчера Устройств
· dirdate - изменение даты создания/модификации/последнего доступа файлов
· directify - группирование файлов по общим параметрам
· editpath - добавляет или удаляет директории в переменной PATH
· fastsum - подсчет контрольных сумм (только MD5)
· fciv - подсчет контрольных сумм (MD5 и SHA-1)
· fdf - Fast Duplicate Finder, находит одинаковые по содержанию файлы
· fsum - подсчет контрольных сумм (12 различных алгоритмов)
· gsar - General Search and Replace, поиск и замена текста в файле
· hex - вывод бинарного файла в шестнадцатиричном формате
· hstart - скрытый запуск командных файлов и консольных программ
· mediainfo - утилита для просмотра метаданных мультимедийных файлов, консоль и фронтенд
· mirror - копирование, создание точной копии всей структуры директорий
· msgbox - вывод сообщения в диалоговом окне
· msgbox (другая) - еще одна утилита для вывода сообщения в диалогоовм окне
· mtee - выводит входящие данные на экран и в файл (одновременно)
· netcat - мощная утилита для передачи данных по TCP/UDP соединениям
· nircmd - универсальная утилита на все (почти) случаи жизни
· outwit - пакет из 6-ти полезных GNU Win32 утилит
· portqry - проверка статуса TCP и UDP портов на удаленных машинах
· PsTools - отличный набор утилит для администрирования
· ptime - определяет время работы программ (точность до 5 миллисек.)
· Quick Batch File Compiler - позволяет превратить ваш батник в независимое приложение
· regperm - изменение прав доступа к веткам/ключам реестра
· rmtshare - управление шарами
· scrnres - screen resolution. Выводит разрешение экрана в консоль
· sed - мощный текстовый фильтр/процессор с поддержкой регулярных выражений
· setacl - изменение прав доступа к объектам
· setenv - утилита для работы с системными переменными
· smtpsend - отправка сообщений на электронную почту
· Streams - утилита для работы с альтернативными потоками NTFS
· trayconizer - позволяет сворачивать окно программы в трей
· tst - скриптовая утилита для автоматизации telnet-сессий
· uniqline - утилита фильтрующая одинаковые строчки в тексте, умеет удалять пустые строчки и пробелы в начале и конце строк
· UnxUtils - набор GNU утилит для Win32
· wget - консольная утилита для скачивания файлов по HTTP, HTTPS и FTP протоколам
· Win2000 Resource Kit Tools
· Win2003 Resource Kit Tools
· xcodewin - перекодировщик русского текста, поддерживает 14 кодировок
· Пакет утилит для организации интерфейса в bat-файлах
· BAT Enchancer
[/more][/b]


Готовые решения и частые вопросы:
Встроенный справочник по командам
Создание помощи по всем командам консоли 2000 и XP
Делаем паузу в командном файле стандартными средствами Windows
[more=Альтернативные решения »]

Альтернативные решения


· Альтернатива команде ECHO - позволяет выводить текст в файл без перевода строки.
· Установка задержки (паузы) в батнике
· Установка задержки (паузы) в батнике (используя VBScript)
· Конвертирование файлов (*.com *.exe *.*) в код батника
· Переход из 32-битной версии cmd.exe в 64-битную
[/more]
[more=Работа с текстом, датой, и файлами »]

Работа с текстом, датой и файлами


· Создание листинга директорий на примере создания плейлиста
· Переименовывание файлов по дате модификации
· Использование даты на день раньше чем сегодня
· Использование даты на день раньше чем сегодня (учитываются високосные годы)
· Использование даты на день раньше чем сегодня (используя VBScript)
· Использование разницы между датой создания файла(папки) и текущей, в днях или минутах(используя VBScript)
· Конвертирование текста из кириллицы в латиницу
· Проверка существования файла и присвоение ему нового имени в случае если такой файл уже существует
· Замена текста в файле (sbs2.com)
· Удаление всего содержимого каталога, включая подкаталоги, командой rd (не удаляя сам каталог)
· Удаление файлов в указаном каталоге включая подкаталоги, с ведением лога удаления (удалён/не удалён)
· Удаление файлов во всех под/каталогах, имя которых (каталога) содержит определённое значение (Temp к примеру)
· Чтение из файлов содержащих ключи и значения (подобно структуре .ini файлов)
· Получение системного времени в одном формате (вне зависимости от настроек даты и времени системы)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
· Разбиение целого числа байтов (размера файла) на тысячные значения
[/more]
[more=Администрирование, автоматизация и сеть »]

Администрирование, автоматизация и сеть


· Запуск сетевого подключения
· Пример выполнения команд по результату команды ping
· Запуск bat файлов как сервис
· SBS - Sleep before shutdown - Утилита для выключеня и перезапуска компьютера через заданное время
· Перезапуск эксплорера с восстановлением открытых директорий
· Download And Extract - батник-гибрид для закачки архивов и моментальной их распаковки в папку с именем самого архива
[/more]
[more=Работа с переменными и параметрами ком. строки »]

Работа с переменными и параметрами ком. строки


· Разименовывание переменных
· Создание (запись) переменных окружения в реестр
· Способ передачи в бат-файл параметра содержащего символы & и последующей обработки полученного значения
[/more]

Описания работы команд и символов участниками темы:
· setlocal enabledelayedexpansion и переменные окружения
· символы & и && в командной строке
· Переменная %0
Автор: lorents
Дата сообщения: 04.09.2010 17:22
Добрый день!
Подскажите, как можно сделать, чтобы бат-файл повторял одно и тоже действие например 50 раз?
Автор: NIKZZZZ
Дата сообщения: 04.09.2010 17:35
lorents

Цитата:
чтобы бат-файл повторял одно и тоже действие например 50 раз?


Код: FOR /L %%i IN (1,1,50) DO действие
Автор: Free_Soft
Дата сообщения: 04.09.2010 17:39

Код: set /a p=0
:0
if %p% LEQ 50 (
set /a p+=1
<требуемое действие>
ping -n 1 localhost >nul
goto:0
)
Автор: lorents
Дата сообщения: 04.09.2010 18:19
NIKZZZZ, Free_Soft большое спасибо.
Автор: Free_Soft
Дата сообщения: 04.09.2010 18:25
А как сделать, чтобы в указанной директории удалялись все папки, названия которых заканчиваются на .tmp? напр., 1042.tmp
Автор: wolf0425
Дата сообщения: 04.09.2010 19:11
Free_Soft проверяй:
for /d %%a in (*.tmp) do echo rd /s /q "%%~a"
Автор: Free_Soft
Дата сообщения: 04.09.2010 19:31
wolf0425
работает. только echo там лишнее было

Добавлено:
Еще может подскажет кто, как прикрутить иконку в заголовок консоли? (кроме варианта с ярлыком и упаковщиком скрипта) Может утилита есть какая?
Автор: Mark_Titov
Дата сообщения: 04.09.2010 20:16
Free_Soft

Цитата:
как прикрутить иконку в заголовок консоли?

Ну если только упаковать в exe, то можно Bat To Exe Converter, он позволяет прикручивать иконки...
Автор: Free_Soft
Дата сообщения: 04.09.2010 20:21

Цитата:
Bat To Exe Converter

почему то разучился распаковывать скрипт в текущую директорию... только в темп. А нужно чтобы сюда же. Раньше ведь получалось, или я путаю что то?
Автор: bomzzz
Дата сообщения: 04.09.2010 20:24
Free_Soft
сюда чтоли??? никак заголовок вроде можно сменить
Автор: Mark_Titov
Дата сообщения: 04.09.2010 20:26
Free_Soft
Если ты про Bat To Exe Converter, то он умеет это, ставишь "Current directory" и все...
Если поставишь "Temporary directory". то конечно он в темп распакует...
Автор: bomzzz
Дата сообщения: 04.09.2010 20:33
Free_Soft
тебе точно надо начинать язык програмировнаия учить, не знаю какой только
Автор: Mark_Titov
Дата сообщения: 04.09.2010 20:33
bomzzz
И заголовок можно -

Код: TITLE WELCOME
Автор: bomzzz
Дата сообщения: 04.09.2010 20:37
точно вставляет. давно им не пользовался.
Автор: Free_Soft
Дата сообщения: 04.09.2010 21:12
Mark_Titov
ну конечно я ставлю
Цитата:
Current directory

Но распаковка все равно происходит в темп. хотя скрипт и работает с прочими файлами, которые находятся в папке запуска
Автор: wolf0425
Дата сообщения: 04.09.2010 23:21

Цитата:
Но распаковка все равно происходит в темп.
ну так чем это плохо?
или у тебя путь от %~dp0 вычисляется?
Автор: Free_Soft
Дата сообщения: 04.09.2010 23:27
wolf0425
плохо тем что в темпе появляется много мусора... вот кстати, не подскажешь, почему выражение

Код: pushd "%temp%" && (
for /d %%a in (*.tmp) do rd /s /q "%%~a"
)
popd
Автор: bomzzz
Дата сообщения: 04.09.2010 23:45
Free_Soft
PUSHD "%USERPROFILE%\Local Settings\Temp\"
IF EXIST "%USERPROFILE%\Local Settings\Temp\" del "%USERPROFILE%\Local Settings\Temp\*.*" /f /s /q
IF EXIST "%USERPROFILE%\Local Settings\Temp\" rmdir "%USERPROFILE%\Local Settings\Temp\" /s /q

не помню откуда это взялось но это темп чистит


Добавлено:
а тама разве галки нету удалить после выполнения?
Автор: Mark_Titov
Дата сообщения: 04.09.2010 23:46
Free_Soft

Цитата:
Но распаковка все равно происходит в темп. хотя скрипт и работает с прочими файлами, которые находятся в папке запуска

У тебя версия какая..? У меня 1,5 и нормально распаковывает...
Автор: bomzzz
Дата сообщения: 04.09.2010 23:49
да он сто лет не обновлялся. у меня тоже 1.5
Автор: adashko
Дата сообщения: 05.09.2010 00:52
Free_Soft

можь у батника правей не хватает?
Автор: bomzzz
Дата сообщения: 05.09.2010 00:55
да нет он криво работает. есть еще один конвертер но он не все комманды поддерживает или путается в путях. чета такое
Автор: adashko
Дата сообщения: 05.09.2010 00:56
Free_Soft

попробуйте runas
Автор: bomzzz
Дата сообщения: 05.09.2010 01:13
да не удовлетворит он его. я сначала с вбс скрипами набаловался, потом с этим конвертером провозился и вытащил потом турбобейсик, а с него на асм перехал
Автор: wolf0425
Дата сообщения: 05.09.2010 02:46

Цитата:
папки, с именами *.tmp не удаляются. Правда они скрытые и системные
потому и не удаляются - их такой фор просто не видит. так попробуй:

Код: for /f "delims=" %%a in (' dir /b /ad . ') do if /i "%%~xa" equ ".tmp" rd /s /q "%%~a"
Автор: Free_Soft
Дата сообщения: 05.09.2010 05:58
wolf0425
пасиб, работает.
еще есть выражение

Код: echo.>"%temp%\~.ddf"
makecab /d RptFileName="%temp%\~.rpt" /d InfFileName="%temp%\~.inf" -f "%temp%\~.ddf" >nul
for /f "tokens=4,5,7" %%a in ('type "%temp%\~.rpt"') do if not defined curdate set "curdate=%%c-%%a-%%b"
Автор: PulsSe
Дата сообщения: 05.09.2010 09:44
Всем привет!) подскажите плиз, можно ли реализовать такую штуку, что бы при запуске бат файла, открывался читсый документ ворда по определенному пути, и самое главное что бы после открытия этого докукмента, в него начал сам прописываться определенный текст,(тот который я захочу) только с медленной скоростью, что б как бы видно было что он печатается) если такое возможно реализовать на бат, подскажите как плиз)

п.с. открыть я знаю как) самое главное с текстом задача)
Автор: bomzzz
Дата сообщения: 05.09.2010 11:38
PulsSe
используй макросы.
Автор: lorents
Дата сообщения: 05.09.2010 11:51
Добрый день!
Иногда при ручном закрытии bat-файла, у меня окно командной строки остается запущенным, при этом сам скрипт уже не работает, и его ни как не выходит закрыть, от чего так происходит?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.