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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

Maz



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

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

Всего записей: 39366 | Зарегистр. 26-02-2002 | Отправлено: 22:41 20-06-2024 | Исправлено: Maz, 21:52 28-09-2024
Simple Code



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

Цитата:
подскажите еще как используя этот call ответить на вопрос:

Вызываем call :VerWin "VerWin".
Вернёт переменную %VerWin%.
Результат:
либо 7
либо 8
либо 8.1
либо 10
либо 11
Далее, используйте переменную %VerWin% под свои нужды.
Например:

Код:
 
@echo off
call :VerWin "VerWin"
if "%VerWin%"=="7"    echo а) ^<10
if "%VerWin%"=="8"    echo а) ^<10
if "%VerWin%"=="8.1" echo а) ^<10
if "%VerWin%"=="10"  echo б) 10
if "%VerWin%"=="11"  echo в) 11
pause >nul & exit
 
:VerWin [%1 Variable Name]
for /F "Tokens=*" %%i in ('powershell.exe -NoP -NoL -NonI -EP Bp -c "(gwmi Win32_OperatingSystem).Caption -Replace '[^0-9.]',''"') do (set "%~1=%%~i") & exit /b
 

Всего записей: 285 | Зарегистр. 19-11-2022 | Отправлено: 22:54 19-10-2024 | Исправлено: Simple Code, 23:08 19-10-2024
alexnov66



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

Цитата:
подскажите еще как используя этот call ответить на вопрос:

вы определяете систему в батнике и еще вопрос задаёте какая система, не странно ли это.

Всего записей: 1500 | Зарегистр. 29-08-2005 | Отправлено: 01:07 20-10-2024
virjokk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Simple Code
Можно проще, без call и переменных:
Код:
 
for /f %%a in ('powershell.exe -NoP -NoL -NonI -EP Bp -c "(gwmi Win32_OperatingSystem).Caption -Replace '\D'"') do (
   if "%%a"=="10" echo 10 & goto :eof
   if "%%a"=="11" echo 11 & goto :eof
   echo ^<10
)

Всего записей: 397 | Зарегистр. 19-05-2006 | Отправлено: 07:01 20-10-2024
DeZz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
virjokk
о! супер, спс
 
alexnov66

Цитата:
не странно ли это

нет, с чего бы?

Всего записей: 1289 | Зарегистр. 23-01-2006 | Отправлено: 10:34 20-10-2024
Simple Code



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

Цитата:
Можно проще, без call и переменных:

Мне не нужно, не проще и не сложнее. Я лишь показал один из способов получить версию ОС.
Далее, уже сами, кому как надо, проще или сложнее.
 
Оффтоп [?]

Всего записей: 285 | Зарегистр. 19-11-2022 | Отправлено: 15:22 20-10-2024 | Исправлено: Simple Code, 15:33 20-10-2024
bbcby

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

Код:
@Echo Off
set output=.
For /F "tokens=*" %%F In ('dir /b /o:n *.avs') Do Call :Encode "%%F"
::Exit
Pause
 
:Encode
start /b /low /wait /i ffmpeg -hide_banner -hwaccel cuda -i "%~1" -c:v h264_nvenc -profile:v high -level 4 -preset p7 -rc:v vbr -b:v 12000k -maxrate:v 24000k -bufsize:v 20000k -pix_fmt yuv420p -g 12 -bluray-compat 1 "%output%\%~n1.264" -y
 
Echo.
Echo Processing Done %~1
Echo.

 
Как можно сделать, чтобы надпись Processing Done %~1 была нужным не цветом.
Спасибо.

Всего записей: 625 | Зарегистр. 11-06-2003 | Отправлено: 19:16 20-10-2024
virjokk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Simple Code
Речь тут исключительно про эффективность [?]

Всего записей: 397 | Зарегистр. 19-05-2006 | Отправлено: 22:18 20-10-2024 | Исправлено: virjokk, 22:30 20-10-2024
Simple Code



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

Цитата:
Как можно сделать, чтобы надпись Processing Done %~1 была нужным не цветом.

Результат

Код:
 
Echo.
call :ColorText "Processing Done" "0B"
call :ColorText "Processing Done" "2E"
call :ColorText "Processing Done" "4F"
Echo.
pause >nul & exit
 
:ColorText [%1 Text] [%2 Color]
md "%temp%\ColorText" 2>nul
pushd "%temp%\ColorText"
echo. >"%~1"
findstr /v /a:%~2 "1" "*"
popd
rd /s /q "%temp%\ColorText"
exit /b
 

 
virjokk

Всего записей: 285 | Зарегистр. 19-11-2022 | Отправлено: 23:09 20-10-2024 | Исправлено: Simple Code, 23:11 20-10-2024
Arcadaw

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

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

В моем так не очень хорошо получится. У меня раньше активируются правила виндофаера, потом запускается прога без админа и затем деактивируются правила. Т.е. деактивация должна пройти после выхода из "проги без админа".
Как вариант, стоит проверка условия наличия в озу проги и если она есть идет бесконечный цикл, как только прога исчезает, так сразу исполняется следующая часть.

Всего записей: 1589 | Зарегистр. 25-03-2004 | Отправлено: 07:18 22-10-2024
WiperX



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую! Подскажите пожалуйста, как через бантик реализовать добавление строчки в файл *ini. В моём случае это:
C:\Program Files\Bandicam\bandicam.ini. Параметр который нужно добавить в файл:
[GENERAL]
UPDATE = 0  
и поставить атрибут только чтение.
---
virjokk
Спасибо

Всего записей: 1041 | Зарегистр. 17-03-2009 | Отправлено: 02:44 23-10-2024 | Исправлено: WiperX, 12:03 24-10-2024
griboed

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

Всего записей: 7 | Зарегистр. 10-05-2024 | Отправлено: 10:27 23-10-2024 | Исправлено: griboed, 10:29 23-10-2024
westlife



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

Цитата:
 
В моем так не очень хорошо получится. У меня раньше активируются правила виндофаера, потом запускается прога без админа и затем деактивируются правила. Т.е. деактивация должна пройти после выхода из "проги без админа".
Как вариант, стоит проверка условия наличия в озу проги и если она есть идет бесконечный цикл, как только прога исчезает, так сразу исполняется следующая часть.

Потому что вы условие не описали полностью, а данное дополнение условия требует другой подход.
даже сейчас не понятно как долго работает утилита от юзера, потому что если делать ожидание процесса, когда она работает долго, то это бесполезная трата ресурсов.
либо нужно делать сложный механизм управления вашей ситуацией, чтобы не вводить пароли и т.д.
простой вариант без ожидания можно так, но будет 2 запроса на применение батника для добавления и удаления правил в начале и после закрытия проги: https://i.imgur.com/HqFRe34.png
я не спец по batch, не знаю все хитрые методы, может вам предложат какие-то другие варианты, но у вас случай не простой, чтобы сделать идеально, это start bat:

Код:
@Echo off
chcp 65001 >nul
cd /d "%~dp0"
 
:: для игнора ожидания "Terminate batch job (Y/N)?",  
:: если admin.bat завершается с ошибкой, если надо
if not "%~1"=="ignore_Y_N" (<nul "%~0" ignore_Y_N & goto :EOF )
 
title bat_start
echo bat_start
 
start "" /wait "F:\test_starts\admin_bat.lnk" /add
notepad.exe
start "" /wait "F:\test_starts\admin_bat.lnk" /remove
 
echo bat_start +++++++++
 
cmd /c pause
exit

 
это для правил:

Код:
@Echo off
chcp 65001 >nul
rem cd /d "%~dp0"
 
title admin_rules
set arg=%~1
 
if "%arg%"=="/add" (
 echo,  rules [add]
) else if "%arg%"=="/remove" (
 echo,  rules [remove]
) else (
 echo,  rules [-------]
)
TIMEOUT /T 4
exit /b 0

 
Вообще, для запуска из под админ что либо без админ прав, есть хитрый способ, если UAC включен.
ярлык на прогу запускать вот так проводником:
explorer "F:\test_starts\notepad.lnk"
но ожидание процесса проги только если делать отслеживанием.
у меня не было необходимости никогда в такой цепочке и готовых удобных методов у меня нет.
 

Всего записей: 1753 | Зарегистр. 12-12-2006 | Отправлено: 13:56 23-10-2024
gntix



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

Цитата:
в win 11 24h2 потерли WMIC

Мнэ-э... А взять из предыдущих версий и закинуть его в %SYSTEMROOT%\SYSTEM32 – не вариант?

Всего записей: 743 | Зарегистр. 07-12-2004 | Отправлено: 01:54 24-10-2024
Arcadaw

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
westlife
Спасибо большое. Изучу и попробую.

Всего записей: 1589 | Зарегистр. 25-03-2004 | Отправлено: 07:36 24-10-2024
DeZz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gntix
Мнэ-э... тема вроде как про написание батников и скриптов, а не копирование файлов.

Всего записей: 1289 | Зарегистр. 23-01-2006 | Отправлено: 09:00 24-10-2024
MaraGame24



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые знатоки
 
Как почистить с помощью CMD\BAT кеш памяти ???
 

 
И если это возможно, сделать очистку при заполнении 6gb.

Всего записей: 1444 | Зарегистр. 25-11-2023 | Отправлено: 10:22 24-10-2024 | Исправлено: MaraGame24, 10:23 24-10-2024
Pasha_ZZZ



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

Цитата:
Как почистить с помощью CMD\BAT кеш памяти ???

Это абсолютно бессмысленное действие. Кэш сам освободится, когда потребуется память.

Всего записей: 13143 | Зарегистр. 11-03-2002 | Отправлено: 10:43 24-10-2024
MaraGame24



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Не освобождается...По крайней мере у меня он может заполнить всю память наверное (10gb видели уже).

Всего записей: 1444 | Зарегистр. 25-11-2023 | Отправлено: 10:47 24-10-2024
Inoz2000



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

Цитата:
может заполнить всю память
дык разве это плохо? Не занимайтесь ерундой.

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

Всего записей: 5425 | Зарегистр. 23-04-2009 | Отправлено: 10:56 24-10-2024
MaraGame24



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

Цитата:
дык разве это плохо? Не занимайтесь ерундой.
Уговорили

Всего записей: 1444 | Зарегистр. 25-11-2023 | Отправлено: 10:58 24-10-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru