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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192

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

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.10 до Windows 11 +Win95cmd +ReactOS) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на своей версии ОС.
 
· Большой сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 38836 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: metatrop, 07:55 29-11-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail
Получить текущее значение и добавить его в новое.

----------
Magically yours
Raistlin

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 20:08 04-11-2023
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin  Спасибо.
Текущее то получил и пытался на основе его
Цитата:
Reg.exe add "HKLM\SYSTEM\ControlSet001\Control\Class\{71a27cdd-812a-11d0-bec7-08002be2092f}" /v "LowerFilters" /t REG_MULTI_SZ /d "ewf\0iorate\0rdyboost\0" /f

Если поодиночке нельзя - а хором в батник не засунешь.  Быстрее ручками исправить в Реестре

Всего записей: 1569 | Зарегистр. 04-09-2015 | Отправлено: 20:36 04-11-2023 | Исправлено: alex52mail, 00:16 05-11-2023
andrejka_k

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дoбpый дeнь. Пpи paбoтe cкpиптa нa питoнe (фaйл C:\folder\script.py) пepиoдичecки paзpывaeтcя coeдинeниe c cepвepoм, кoтopoe нeoбхoдимo пoддepживaть пocтoяннo в aктивнoм cocтoянии. Пpи этoм coeдинeниe уcтaнaвливaeтcя чepeз вeбcoкeт (wss://). Нa caмo coeдинeниe, к coжaлeнию, пoвлиять нe пoлучaeтcя, и peшeниeм пpoблeмы являeтcя пpинудитeльнoe зaкpытиe пpoцecca pукaми (т.e. зaкpытиe oкнa кoнcoли c пpoцeccoм python.exe) и зaпуcк, oпять жe, вpучную фaйлa C:\folder\script.py.
Pучныe дeйcтвия хoтeлocь бы aвтoмaтизиpoвaть, нo здpaвых мыcлeй нeт. Кpoмe мыcли o тoм, чтo aвтoмaтизaция вoзмoжнa c пoмoщью cцeнapиeв/кoмaнднoй cтpoки/бaтникoв.
1) Пepвaя мыcль зaвязaнa нa тo, чтoбы пepeзaпуcкaть пpoцecc пpи oбнapужeнии в oкнe кoнcoли питoнa (C:\Python\Python311\python.exe) oпpeдeлeннoгo cooбщeния, кoтopoe пoявляeтcя пpи paзpывe coeдинeния. Этo cooбщeниe типoвoe и выглядит пpимepнo тaк: «Connection error:…..».
Мoжeт ли cцeнapий из бaтникa кaк-тo oтcлeживaть пoявлeниe в кoнcoли питoнa пoявлeниe oпpeдeлeннoгo тeкcтa, кoтopый будeт являтьcя тpиггepoм для зaкpытия oкнa кoнcoли и пocлeдующeгo пepeзaпуcкa cкpиптa?
Ecли тaкoe вoзмoжнo, тo кaк дoлжeн выглядeть бaтник?
2) Втopaя мыcль зaвязaнa нa тo, чтoбы пepeзaпуcкaть пpoцecc, нaблюдaя зa paзмepoм фaйлa c лoгaми (C:\folder\log.txt), кудa пocтoяннo пишeтcя cлужeбнaя инфopмaция в пpoцecc paбoты cкpиптa. Тpиггepoм paзpывa coeдинeния мoжeт cтaть paзмep фaйлa c лoгaми, кoтopый нe измeняeтcя, cкaжeм, зa пocлeднюю минуту. И этo вapиaнт кaжeтcя гopaздo пpoщe пepвoгo вapиaнтa.
Мoжeт ли cцeнapий из бaтникa кaк-тo oтcлeживaть измeнeниe paзмepa фaйлa c лoгaми (:\folder\log.txt) и ecли измeнeний paзмepa нe былo зa пocлeднюю минуту, бaтник дoлжeн зaкpыть oкнo кoнcoли и пoтoм пepeзaпуcтить cкpипт?
Ecли тaкoe вoзмoжнo, тo кaк дoлжeн выглядeть бaтник?
3) Aльтepнaтивныe мыcли, кoтopыe мoгут иcпoльзoвaтьcя пpи peшeнии зaдaчи, тoжe пpивeтcтвуютcя. Вoзмoжнo, ecть eщe бoлee пpocтaя peaлизaция.
Cпacибo.

Всего записей: 1225 | Зарегистр. 13-05-2003 | Отправлено: 15:57 05-11-2023
Fenrizz



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

Код:
for /f "tokens=1,2,*" %%A in ('REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{71a27cdd-812a-11d0-bec7-08002be2092f}" /v LowerFilters') do set LowerFilters=%%C
set LowerFilters=%LowerFilters% ewf\0iorate\0rdyboost\0
echo %LowerFilters%
 
Reg.exe add "HKLM\SYSTEM\ControlSet001\Control\Class\{71a27cdd-812a-11d0-bec7-08002be2092f}" /v "LowerFilters" /t REG_MULTI_SZ /d "%LowerFilters%" /f  

 
Добавлено:
andrejka_k
А если выводить ошибки в файл и мониторить его?  
 

Код:
C:\Python\Python311\python.exe C:\folder\script.py >script.log 2>errors.log  
FIND /I "Connection error" errors.log && do something  

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 10:47 06-11-2023 | Исправлено: Fenrizz, 11:54 06-11-2023
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrejka_k, из-за чего разрывается соединение?

Всего записей: 7336 | Зарегистр. 08-09-2001 | Отправлено: 12:48 06-11-2023
andrejka_k

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
спасибо, надо попробовать. единственное, что смущает в таком подходе - это не совсем точное понимание, как будет обрабатываться найденная в логе строка, если она ВСЕГДА при разрыве будет одинаковой? т.е. при каждом разрыве будет появляться ОДНО И ТОЖЕ СООБЩЕНИЕ и его нужно как-то УНИКАЛИЗИРОВАТЬ, чтобы понимать, что сообщения появились в РАЗНОЕ время и нужно проверять только НОВЫЕ строки, игнорируя СТАРЫЕ. может, время текущее как-то добавлять в сроку и поиск новой строки осуществлять по новому (т.е. уникальному, ранее не существовавшему в логе) времени.
los
разрыв происходит со стороны сервера. точная причина неизвестная, но, скорее всего, просто хотят таким образом ограничить число активных соединений/ограничить нагрузку. если переподключиться, то установление соединения происходит быстро и без ошибок.

Всего записей: 1225 | Зарегистр. 13-05-2003 | Отправлено: 13:19 06-11-2023 | Исправлено: andrejka_k, 13:24 06-11-2023
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrejka_k
Самое простое - при перезапуске удалять (или переименовывать) log файл.

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 13:36 06-11-2023
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrejka_k, возможно добавление команды ping через определенный промежуток времени поможет решить проблему.

Всего записей: 7336 | Зарегистр. 08-09-2001 | Отправлено: 13:44 06-11-2023
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо запустить RegeditPE.exe и продолжить скрипт с этой прогой.
Начитался разного типа:
start /nowait
но в w11 скрипт стоит - пока не закроешь открытую прогу.
Сработало:
start "" /b  RegeditPE-10.exe
 
Но тут не понятно:  когда скрипт продолжил работу - как начал открывать прогу - или когда она уже открылась.
 
Как открыть прогу:  чтобы скрипт продолжился только после открытия и вместе с этой прогой.
 
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1569 | Зарегистр. 04-09-2015 | Отправлено: 12:35 09-11-2023 | Исправлено: alex52mail, 01:56 10-11-2023
saym101



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помогите со скриптом.
Если запускать сам по себе, то отрабатывает нормально. Если запускать через планировщик, он архивирует сам себя, то есть папку в которой находится rar.exe.  
exclude.txt - для перечисления исключаемых файлов по их расширению.  
folders.txt - для перечисления путей архивируемых папок.    
 

Код:
 
@echo off
cd /D %~dp0
setlocal enabledelayedexpansion
 
set excludeFile=D:\SCRIPT\server\exclude.txt
set foldersFile=D:\SCRIPT\server\folders.txt
set backupFolder=D:\Backup\Server
set rarPath="%~dp0rar.exe"
set maxBackups=8
 
if not exist %backupFolder% mkdir %backupFolder%
if not exist %excludeFile% (
    echo "Ошибка: Файл exclude.txt не найден!"
    exit /b 1
)
if not exist %foldersFile% (
    echo "Ошибка: Файл folders.txt не найден!"
    exit /b 1
)
 
:: Получаем полный путь к скрипту
for %%I in ("%~f0") do set "scriptPath=%%~dpI"
 
for /f "delims=" %%a in (%foldersFile%) do (
    set folder=%%a
    set folderName=%%~nxa
    set currentDate=!date:~6,4!!date:~3,2!!date:~0,2!_!time:~0,2!!time:~3,2!!time:~6,2!
    set rarFileName=!backupFolder!\!folderName!_!currentDate!.rar
 
    if "!folder!" neq "!scriptPath!" (
        pushd "!folder!"
        %rarPath% a -r -x@%excludeFile% -k "!rarFileName!" *
        popd
    )
 
    call :cleanupBackups !folderName!
)
 
exit /b
 
:cleanupBackups
setlocal
set folderName=%1
set count=0
 
for %%F in (%backupFolder%\%folderName%_*.rar) do (
    set /a count+=1
)
 
set /a deleteCount=count-maxBackups
 
if %deleteCount% gtr 0 (
    for /f "skip=%maxBackups%" %%F in ('dir /b /o-d %backupFolder%\%folderName%_*.rar') do (
        del "%%F"
    )
)
 
endlocal
exit /b
 
 

Всего записей: 256 | Зарегистр. 16-04-2002 | Отправлено: 13:04 09-11-2023
BorlandIMHO

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saym101
Команда архивации у вас пакует "всё что лежит по текущему пути".  
Если пакует сам скрипт и рядомлежащий rar - значит почему-то не отработала команда pushd перед упаковкой и текущим каталогом является именно каталог с rar и скриптом...
Обычно pushd не работает, если путь недоступен (отсутствует физически либо нет прав доступа).

----------
http://www.imho.ws

Всего записей: 2403 | Зарегистр. 12-10-2006 | Отправлено: 13:27 09-11-2023
saym101



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

Цитата:
Команда архивации у вас пакует "всё что лежит по текущему пути".  
Если пакует сам скрипт и рядомлежащий rar - значит почему-то не отработала команда pushd перед упаковкой и текущим каталогом является именно каталог с rar и скриптом...
Обычно pushd не работает, если путь недоступен (отсутствует физически либо нет прав доступа).

Да это понятно что путь не отрабатывает как надо. Не могу понять как переписать что б работало через планировщик. Сам по себе он работает.

Всего записей: 256 | Зарегистр. 16-04-2002 | Отправлено: 13:42 09-11-2023
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saym101
Когда работает "сам по себе", то рабочий каталог (каталог запуска) совпадает, очевидно, с каталогом, где лежит скрипт. А когда через планировщик - нет. Вот от этого и пляшите.

----------
Magically yours
Raistlin

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 13:52 09-11-2023
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saym101
Пропишите в планировщике в поле Рабочая папка (в разделе Создание действия) нужную папку.
По умолчанию рабочей папкой будет C:\Windows\System32\

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 17:47 09-11-2023 | Исправлено: Fenrizz, 07:06 10-11-2023
351878



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кто нить подскажет, как после этого сделать чтобы открылись последние открытые окна ?:
 
taskkill /IM explorer.exe /F  
cd /d %userprofile%\AppData\Local
del IconCache.db /a
explorer.exe

Всего записей: 999 | Зарегистр. 28-03-2016 | Отправлено: 19:43 09-11-2023
Fenrizz



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

Цитата:
Как открыть прогу:  чтобы скрипт продолжился только после открытия и вместе с этой прогой.

Не совсем понятно, что должно являться критерием того, прога "открылась"? Если появление окна, то можно мониторить через tasklist:
 
TASKLIST /fi "Windowtitle eq Qwerty"

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 07:13 10-11-2023 | Исправлено: Fenrizz, 07:15 10-11-2023
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разбирался как избавляться от кавычек: а столкнулся с непонятицей
Цитата:
@Echo off
cls
echo.
for %%p in ( "Control Panel" "Control Panel\Desktop" ) do (
echo p == %%p
set zz=%%p
echo zz == %zz%
echo p == %%p
set xx=%zz:~1,-1%
echo xx == %xx%
echo =======
Reg.exe add "HKEY_CURRENT_USER\%xx%\Cursors" /v "111" /t REG_SZ /d "%%SystemRoot%%\Cursors\10eG-Eizo-Paul-1-0-cur-wait.ani" /f
)

Этот скрипт выводит:
Цитата:
p == "Control Panel"
zz == "Control Panel\Desktop"
p == "Control Panel"
xx == Control Panel\Desktop
=======
The operation completed successfully.
p == "Control Panel\Desktop"
zz == "Control Panel\Desktop"
p == "Control Panel\Desktop"
xx == Control Panel\Desktop
=======
The operation completed successfully.
  1).  Почему в первом цикле:  р имеет первое значение до и после присваивания - а zz присваивается второе как и правильно во втором цикле ?
 
   2).  Есть ли другие способы избавления от кавычек: без промежуточного присваивания - а сразу в строке команды ?
 
Fenrizz - Не совсем понятно, что должно являться критерием того, прога "открылась"?
В данном конкретном случае: RegeditPE-10.exe грузит в Реестр все кусты не активной ОС - с которыми работает скрипт.
Пока кусты не загрузились:  скрипт должен ждать - иначе пойдут ошибки.
 
  3).  Как дать скрипту остановиться и ждать окончание загрузки кустов и дать команду на продолжение скрипта.  
 
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1569 | Зарегистр. 04-09-2015 | Отправлено: 17:53 10-11-2023 | Исправлено: alex52mail, 18:18 10-11-2023
Inoz2000



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

Цитата:
во втором цикле ?  

Тут всго один цикл.
Цитата:
Есть ли другие способы избавления от кавычек: без промежуточного присваивания - а сразу в строке команды ?  

Их наверное есть и много, но проще использовать %%~p
 
Добавлено:
А что покажет
echo zz == %zz%
Перед циклом?
 
 
Добавлено:
Кусты грузить командой reg load
 
P. S. Читайте вторую строку своей подписи.

Всего записей: 4916 | Зарегистр. 23-04-2009 | Отправлено: 18:09 10-11-2023
DeZz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У Windows Terminal есть т.н. "Quake mode". Если нажать win+` то вызывается окно терминала.
Чтобы фишка работала сразу при логоне, в файле по пути:

Код:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

нужно добавить строку:

Код:
"compatibility.allowHeadless": true,

 
ВОПРОС - как эту строку можно добавить при помощи .bat-ника?

Всего записей: 1165 | Зарегистр. 23-01-2006 | Отправлено: 16:22 12-11-2023 | Исправлено: DeZz, 16:30 12-11-2023
iNNOKENTIY21



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

Цитата:
У Windows Terminal есть т.н. "Quake mode".

ВОПРОС - как эту строку можно добавить при помощи .bat-ника?


Код:
wt.exe -w _quake

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 16:37 12-11-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru