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

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

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

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

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



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

Цитата:
Не думаю. что тут кто мысли читает

Вы снова невнимательны. Об этом речи и не шло. Впрочем, продолжайте.

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 01:06 27-01-2023
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как в REG_MULTI_SZ добавить или удалить только одну строку из списка
Так не работает
Цитата:
 reg delete HKLM\SYSTEM\CurrentControlSet\Control\Class\{71a27cdd-812a-11d0-bec7-08002be2092f}  /v LowerFilters /t REG_MULTI_SZ /d rdyboost /f  
А если  reg ADD ..... - то заменяет все на одну строку.
Как прописать для одной строки не трогая осталные.
 
Удачи.

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

Всего записей: 1568 | Зарегистр. 04-09-2015 | Отправлено: 03:29 27-01-2023 | Исправлено: alex52mail, 03:33 27-01-2023
GCRaistlin



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

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 03:37 27-01-2023
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
А как в новом прописать несколько строк ?
Вопрос и был о нескольких строках.
 
Удачи.

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

Всего записей: 1568 | Зарегистр. 04-09-2015 | Отправлено: 13:56 27-01-2023
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail
Прописать-то просто - см. reg add /?. Проблема корректно распарсить, т. к. любой символ, выбранный в качестве разделителя, в общем случае может встретиться в самом значении.

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 14:05 27-01-2023
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Как парсить видел в поиске - а вот как прописать несколько строк - не нашел.
Подобное  
REG ADD /?
  REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail
    Adds a value (name: MRU, type: REG_MULTI_SZ, data: fax\0mail\0\0)
 заменяет на одну строку.
 
И первоначальный вопрос и был - как прописывать несколько строк.
 
Удачи.

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

Всего записей: 1568 | Зарегистр. 04-09-2015 | Отправлено: 14:19 27-01-2023
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail
Сепаратор задать нужно (/s).
 
Добавлено:
Хотя нет, можно и не задавать, по умолчанию \0.

Код:
 
reg add HKEY_CURRENT_USER\Test /v TestMultiSZ2 /d fax\0mail /t REG_MULTI_SZ
 

 
Добавлено:
Кстати, записать-то, оказывается, вовсе не просто: в общем случае задача решения не имеет, в отличие от задачи распарсить значение на строки (в 2k3+).

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 14:25 27-01-2023
alex52mail

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

Всего записей: 1568 | Зарегистр. 04-09-2015 | Отправлено: 15:16 27-01-2023
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ли сакральный смысл в строчных и заглавных буквах - так не работает:
set SkipISO=yes
if %SkipISO%==yes goto :After_boot-wim
..............
:After_boot-wim

 
В скриптах часто:
set SkipISO=1
if %SkipISO% EQU 1 goto :After_boot-wim

 
В чем тут смыcл.
 
Удачи.
 
Добавлено:
А том ли только смысл:  после слова может остаться пробел - и сравнение не сработает, а после цифры пробел не имеет значения.  Или что другое.

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

Всего записей: 1568 | Зарегистр. 04-09-2015 | Отправлено: 18:40 29-01-2023 | Исправлено: alex52mail, 20:29 30-01-2023
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail
Ваш вопрос непонятен.

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 19:22 29-01-2023
westlife



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail
Регистр для переменных не играет роли, для лучшего восприятия пишут.
при сравнении без кавычек крайние пробелы будут игнорироваться, но само значение не должно быть с пробелами.
Для игнорирования регистра у значения: /i

Код:
set "SkipISO=  Yes   "
if %SkipISO% == Yes echo.  равно 1
if %SkipISO% EQU Yes echo.  равно 2
if /i %SkipISO% EQU yeS echo.  равно 3
if "%SkipISO%" EQU "  Yes   " echo.  равно 4
if /i "%SkipISO%" EQU "  yeS   " echo.  равно 5

 
EQU и др. - арифметическое сравнение, символов по ASCII, а == строки сравнивает.
if "ay2" GTR "ai2" echo.  символ "y" больше "i" по коду ASCII
 
Если не цифры, то лучше с кавычками всегда делать сравнение.
Ваш пример первый будет работать, если правильно указать переменную с %

Всего записей: 1390 | Зарегистр. 12-12-2006 | Отправлено: 20:38 29-01-2023
GCRaistlin



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

Цитата:
Если не цифры, то лучше с кавычками всегда делать сравнение.

С кавычками лучше делать только в том случае, если в значениях может быть что угодно, кроме кавычек.

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 21:01 29-01-2023
Grishanenko

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Раз уж речь о кавычках.
В процессе работы батника, переменной присваивается значение, в котором может быть знак "&". Из-за него приходится заключать значение в кавычки.
set var1="135&246"
Как потом вывести эту var1 в файл, но без кавычек?
echo %var1% >> 123.txt

Всего записей: 719 | Зарегистр. 17-06-2006 | Отправлено: 21:55 29-01-2023
GCRaistlin



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

Код:
 
set "A=&"
setlocal enabledelayedexpansion
>out.txt echo !A!
 

 
Тот же прием удобен и при сравнении:

Код:
 
set "A=&"
set "B="
setlocal enabledelayedexpansion
if !A!==!B! rem
 


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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 22:03 29-01-2023
zloybuka

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

Код:
set var1="135&246"
for %%i in (%var1%) do echo %%~i >> 123.txt
 

Всего записей: 349 | Зарегистр. 30-05-2008 | Отправлено: 22:21 29-01-2023
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zloybuka
А вы попробуйте со значением "135&246*". Получится очень интересно, я гарантирую это.
 
"Если есть два способа, простой и сложный, то выбирай сложный, так как он проще простого способа, который тоже сложный, но ещё и кривой".

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 22:30 29-01-2023
zloybuka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
про "135&246!" в Вашем варианте будем шутить?

Всего записей: 349 | Зарегистр. 30-05-2008 | Отправлено: 22:44 29-01-2023
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zloybuka
Давайте, пошутите. Посмеемся вместе.

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 23:42 29-01-2023
westlife



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Grishanenko
С & в cmd проблема, не всегда извращения помогают.
можно так без delayedexpansion: заменить на экранированный &, а затем обрезать крайние символы кавычек:

Код:
set var1="135&246"
set "var1=%var1:&=^^^&%"
set "var1=%var1:~1,-1%"
echo %var1%

Всего записей: 1390 | Зарегистр. 12-12-2006 | Отправлено: 00:39 30-01-2023
GCRaistlin



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

Цитата:
С & в cmd проблема, не всегда извращения помогают.

Извращения - не всегда, а delayed expansion - всегда. И не только с &.

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 01:23 30-01-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

Компьютерный форум 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