Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
часть 1 | часть 2 | часть 3 | часть 4 | часть 5
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ more ].  

Смежные темы:
В помощь системному администратору > Автоматизация администрирования
Microsoft Windows > Сценарии Windows

Полезные ссылки:
· Из Windows XP Professional Product Documentation:
> Описание Cmd.exe > Command shell overview
> Using batch files > Using batch parameters > Using filters > Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.51 до Windows 10) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 4.0, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на текущей версии ОС. Ссылки wdho.ru tinyupload.com dbree.org
 
· Сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 37439 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: Maz, 07:16 24-04-2021
M_Volkov



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Fenrizz
Цитата:
А внутри добавляете проверку
Мне нужна конкретная проверка: Содержит ли текст события конкретный текст, например, "Просьба не завершать терминальный сеанс 5 минут".

Всего записей: 5438 | Зарегистр. 23-06-2008 | Отправлено: 18:45 19-03-2021 | Исправлено: M_Volkov, 18:47 19-03-2021
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
del

Всего записей: 407 | Зарегистр. 12-09-2017 | Отправлено: 18:58 19-03-2021 | Исправлено: Fenrizz, 19:02 19-03-2021
icijafi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz, благодарю, Маэстро! Всё работает!

Всего записей: 29 | Зарегистр. 20-12-2017 | Отправлено: 22:09 19-03-2021
Shev162

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz

Цитата:
 
Цитата:
Столкнулся с такой проблемой. Не могу через bat-файл скопировать tnsnames.ora в папку c:\oracle\network\ADMIN после тихой установки оракл-клиента.  
 
А через Проводник копирует?  

 
Копирует с подтверждением, и если Total Commander от администратора запустить, то тоже без проблем. Это в Windows 10 такое с папкой C:\Oracle как и с папками винды или программ файлс, т.е. системными и как это обойти уже несколько дней бьюсь, через set __COMPAT_LAYER=RUNASINVOKER тоже пробовал не помогает.

Всего записей: 8 | Зарегистр. 11-07-2008 | Отправлено: 22:47 19-03-2021
ExDimanya



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shev162
Цитата:
 Это в Windows 10 такое с папкой C:\Oracle как и с папками винды или программ файлс
В 10-ке всё блокируется что в корне системного диска. Создайте папку и настройте права. Потом всё туда сливайте.

----------
Клон полезняшек от Ratiborus
Телеграм
Sic transit gloria mundi

Всего записей: 9350 | Зарегистр. 19-04-2018 | Отправлено: 23:18 19-03-2021
M_Volkov



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как в bat-файле написать условие, что текстовый файл пустой? Или проверить отсутствие в нем определенного текста. Например, если в лог-файле последняя строка "Выгрузка информационной базы успешно завершена", то Exit. Если нет или вообще пустой, то продолжаем исполнение bat-файла.

Всего записей: 5438 | Зарегистр. 23-06-2008 | Отправлено: 09:00 20-03-2021
B3T6

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
find "Выгрузка информационной базы успешно завершена" 1.log >nul &&(echo есть &exit /b)

Всего записей: 1078 | Зарегистр. 05-09-2010 | Отправлено: 10:35 20-03-2021
M_Volkov



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
B3T6
Спс, уточню: Путь\Имя лог-файла в переменной LogName.
 
Добавлено:
Команда find работает только в UNIX?

Всего записей: 5438 | Зарегистр. 23-06-2008 | Отправлено: 12:29 20-03-2021 | Исправлено: M_Volkov, 13:27 20-03-2021
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
M_Volkov

Цитата:
Команда find работает только в UNIX?

Нет, в Windows - https://ss64.com/nt/find.html
 

Цитата:
Например, если в лог-файле последняя строка "Выгрузка информационной базы успешно завершена", то Exit.  

Если принципиально, что именно последняя, то так

Код:
@echo off
 
for /F "tokens=*" %%A in (file.log) do set laststr=%%A
if /I "%laststr%"=="Выгрузка информационной базы успешно завершена" Exit /b
 

Всего записей: 407 | Зарегистр. 12-09-2017 | Отправлено: 13:56 20-03-2021
M_Volkov



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Fenrizz
Цитата:
Если принципиально, что именно последняя, то...
Наверное нет, но обычно так: либо лог-файл пустой, либо содержит текст о неудачных попытках dt-выгрузки.
Скобки обязательны для file.log? Это имя лог-файла? Оно у меня в переменной LogName. Можно заменить на %LogName%?

Всего записей: 5438 | Зарегистр. 23-06-2008 | Отправлено: 14:24 20-03-2021 | Исправлено: M_Volkov, 14:47 20-03-2021
M_Volkov



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спс, вроде работает, но конфигуратор пишет в лог-файл свои сообщения о результатах dt-выгрузки в ANSI кодировке, bat-файл в OEM кодировке, пришлось так написать
Код:
for /F "tokens=*" %%A in (%LogName%) do set laststr=%%A
if /I "%laststr%"=="┬√уЁєчър шэЇюЁьрЎшюээющ срч√ єёях°эю чртхЁ°хэр" Exit /b
Некрасиво, но работает. А можно красиво написать?

Всего записей: 5438 | Зарегистр. 23-06-2008 | Отправлено: 16:47 20-03-2021
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
M_Volkov
Просто сохраните bat-файл тоже в кодировке ANSI

Всего записей: 407 | Зарегистр. 12-09-2017 | Отправлено: 19:30 20-03-2021 | Исправлено: Fenrizz, 19:39 20-03-2021
M_Volkov



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Fenrizz
Были проблемы с кодировкой, когда имена файлов полностью писал, в путях была кириллица
Код:
set "LogName=\\corp.akit\workspace$\1C\1с_Архивы\AAAAkit\AAAAkit.log"
но потом заменил на
Код:
set "LogName=%~dp0AAAAkit.log"

Добавлено:
А можно не всю строку, только часть вписать: "успешно завершена" о успешном завершении?

Всего записей: 5438 | Зарегистр. 23-06-2008 | Отправлено: 05:35 21-03-2021 | Исправлено: M_Volkov, 16:13 21-03-2021
Songbird



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите с бат-файлом. Вот по hostname можно вывести имя компьютера, а как сделать проверку по имени? Ну к примеру такой бат-файл - Если имя компьютера "Kondor", то вывести имя компьютера, если любое другое - выйти из бат-файла.

Всего записей: 65 | Зарегистр. 06-08-2020 | Отправлено: 11:09 23-03-2021
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Songbird
for /f "delims=" %%c in ('hostname') do if "Kondor"=="%%c" (echo %c) else exit

Всего записей: 3457 | Зарегистр. 23-04-2009 | Отправлено: 11:18 23-03-2021
Songbird



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
Спасибо! Сначала не поняла, почему не работает, потом обнаружила, что в Вашей строчке надо подправить -
Код:
echo %c
на
Код:
echo %%c

Всего записей: 65 | Зарегистр. 06-08-2020 | Отправлено: 14:00 23-03-2021
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Songbird
В более "функциональном" стиле
 

Код:
echo | hostname | findstr /I /X "Kondor" || exit /B
 


Всего записей: 407 | Зарегистр. 12-09-2017 | Отправлено: 14:19 23-03-2021 | Исправлено: Fenrizz, 14:29 23-03-2021
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
зачем первое echo?

----------
Мы все умрём. (-:

Всего записей: 3457 | Зарегистр. 23-04-2009 | Отправлено: 14:24 23-03-2021 | Исправлено: Inoz2000, 14:32 23-03-2021
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
Исправил
 

Цитата:
 как быть, если имя компьютера Kondor-Shmondor, например?

Добавил findstr /X
 
Добавлено:
Inoz2000

Цитата:
зачем первое echo?

Чтобы вывести на экран hostname, если оно == "Kondor"

Всего записей: 407 | Зарегистр. 12-09-2017 | Отправлено: 14:31 23-03-2021
Songbird



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
Спасибо! А почему более функционально? Мне собственно это нужно было как пример. Надо, чтобы один и тот же батник на разных компах запускал разные программы. Вариант от Inoz2000 я без проблем преобразовала в нужные мне батники, а вот в Вашем, просто вместо
Код:
echo | hostname
надо ставить goto или как-то иначе? Я что-то не очень поняла - чем это лучше, растолкуйте пожалуйста. Я не в смысле спора, а понять хочу.  

Всего записей: 65 | Зарегистр. 06-08-2020 | Отправлено: 16:24 23-03-2021
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru