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

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

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

Maz (20-06-2024 22:42): Командная строка, батники, сценарии - bat, cmd (7 часть)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 193 194 195 196 197 198 199 200 201

   

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

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

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

Цитата:
 рабочий вариант? С обеими папками...

Лехко!

Код:
REM Проверяем наличие/доступность папки g:\Temp, если папки нет - создаём, если не удаётся создать - выход
pushd "g:\Temp" && popd || (md "g:\Temp" ||exit)
 
REM Задаём переменные окружения TEMP и TMP текущего пользователя
setx TEMP g:\Temp
setx TMP g:\Temp
 
REM Задаём переменные окружения TEMP и TMP компьютера
setx TEMP g:\Temp /M
setx TMP g:\Temp /M
 
exit


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

Всего записей: 2612 | Зарегистр. 12-10-2006 | Отправлено: 18:00 19-09-2021
Susie7



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

Цитата:
REM Проверяем наличие/доступность папки g:\Temp, если папки нет - создаём, если не удаётся создать - выход
pushd "g:\Temp" && popd || (md "g:\Temp" ||exit)
 
REM Задаём переменные окружения TEMP и TMP текущего пользователя
setx TEMP g:\Temp
setx TMP g:\Temp
 
REM Задаём переменные окружения TEMP и TMP компьютера
setx TEMP g:\Temp /M
setx TMP g:\Temp /M
 
exit
 

 
Т.е. - "
Windows Registry Editor Version 5.00
 
REM Проверяем наличие/доступность папки g:\Temp, если папки нет - создаём, если не удаётся создать - выход
pushd "g:\Temp" && popd || (md "g:\Temp" ||exit)
 
REM Задаём переменные окружения TEMP и TMP текущего пользователя
setx TEMP g:\Temp
setx TMP g:\Temp
 
REM Задаём переменные окружения TEMP и TMP компьютера
setx TEMP g:\Temp /M
setx TMP g:\Temp /M
 
exit" - сохранить, как .reg?
Запустить и всё будет Ок?

----------
Принцессы бывают не только в сказках

Всего записей: 1068 | Зарегистр. 11-07-2018 | Отправлено: 19:34 19-09-2021 | Исправлено: Susie7, 19:35 19-09-2021
BorlandIMHO

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Susie7
Не надо никаких "reg".
Вы просили батничек - вы его получили.
Изменения в реестр вносятся программой setx.


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

Всего записей: 2612 | Зарегистр. 12-10-2006 | Отправлено: 20:02 19-09-2021
Susie7



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

Цитата:
Не надо никаких "reg".

Перепутала, с кем не бывает!?
Расширение - bat?
Запустить, ребутнуться и обе папки темп будут на разделе G?


----------
Принцессы бывают не только в сказках

Всего записей: 1068 | Зарегистр. 11-07-2018 | Отправлено: 22:01 19-09-2021
BorlandIMHO

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Susie7
Переменные окружения меняются сразу.
Любой процесс, запущенный после изменения - считает новые значения и будет использовать папку на диске g:.
Все процессы, запущенные до изменения - продолжат работать со старыми значениями.
Перезагрузка нужна только для системных процессов/служб.

Цитата:
Расширение - bat?

Можно и bat, но лучше всё-таки cmd.

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

Всего записей: 2612 | Зарегистр. 12-10-2006 | Отправлено: 22:45 19-09-2021
JohnRD

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

Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 08:41 20-09-2021
Susie7



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

Цитата:
Любой процесс, запущенный после изменения - считает новые значения и будет использовать папку на диске g:.

 
А я подумала, раздел G не самый подходящий, там емул качает и прочее движение.
Может создать раздельчик специально для таких дел? Туда бы ещё виртуальную память и сон.


----------
Принцессы бывают не только в сказках

Всего записей: 1068 | Зарегистр. 11-07-2018 | Отправлено: 08:56 20-09-2021
Inoz2000



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

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

Всего записей: 5220 | Зарегистр. 23-04-2009 | Отправлено: 09:06 20-09-2021
dedulya68



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

Цитата:
REM Проверяем наличие/доступность папки g:\Temp, если папки нет - создаём, если не удаётся создать - выход
pushd "g:\Temp" && popd || (md "g:\Temp" ||exit)
 
REM Задаём переменные окружения TEMP и TMP текущего пользователя
setx TEMP g:\Temp
setx TMP g:\Temp
 
REM Задаём переменные окружения TEMP и TMP компьютера
setx TEMP g:\Temp /M
setx TMP g:\Temp /M
 
exit

Добавьте возможность выбора диска.

Всего записей: 991 | Зарегистр. 22-12-2016 | Отправлено: 09:13 20-09-2021
vzhik777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет.
Есть задача упростить батник с помощью счетчиков (или еще как то), иначе пришлось копировать тьму строк подменяя циферки в текстовом редакторе ))) Я не программист, как уж сумел. Главное работает.
Вот кусок, выдранный из 1700 строк (надо бы вообще 17000).
 
Батник
 
Суть в чем...
С помощью шаблонов ключей, лежащих в файлах 1К1...1К17.тхт мы проверяем другие файлы 221...22100.тхт.
Все что найдется похожего среди 2 разных записывается в 0.тхт.
Дело в том, что если файлы собраны в один они очень много весят - не хватает оперативки.
В шаблоне 1 млн строк с ключами, в проверяемом на совпадения могут быть миллиарды.
Как бы туда счетчики вкрутить чтоб сначала все части шаблона прогнало на соответствие поочередно с каждой частью проверяемых файлов?
 
Ну и как бы все это дело закинуВ в шары на удаленных машинах запускать\проверять на одной?
 
И до кучи... Если есть какие то способы ускорить бы процесс проверки 1 миллионом ключей миллиарды разных на совпадения.
На пока около 4 млн проверяемых ключей тратится 5-6 часов. Параллельно запустить еще один с проверкой новой партии строк невозможно. Оперативки не хватает.
Для примера шаблон 1К1.тхт весит 2.5 Мб и имеет 65000 строк.
Проверяемый 221.тхт весит и имеет строк столько же.  
Итого 2.5+2.5+вес батника нагружают оперативку до 6.5 Гб (по умолчанию 2.5 жрет винда 8.1).

Всего записей: 680 | Зарегистр. 03-03-2007 | Отправлено: 09:59 20-09-2021 | Исправлено: vzhik777, 10:26 20-09-2021
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Susie7 - Может создать раздельчик специально для таких дел? Туда бы ещё виртуальную память
Это давно решено
Так что можно и не грузить систему в память - а выделить больше памяти для кеширования.  
Обработка всех данных,  \Temp и \pagefile.sys (оба в PrimoRamDisk)  -  все равно в памяти.  На системе  C:\  -  фильтр зашиты EWF в памяти.   На SSD - PrimoCache в памяти - ускоряет и продлевает жизнь SSD,  и откуда vhd и портативные программы работают с кешированием в памяти

 
Удачи

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

Всего записей: 1765 | Зарегистр. 04-09-2015 | Отправлено: 11:58 20-09-2021
BorlandIMHO

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

Цитата:
Добавьте возможность выбора диска.

Не вижу смысла.
ИМХО, совершенно незачем ставить на молоток оптический прицел. Особенно на молоток, использующийся для забивания одного гвоздя на чаще раза в пару лет.
Лично я так и вовсе до сих пор переназначал переменные окружения через стандартный GUI винды, скрипт чисто по-приколу нарисовал.
Susie7

Цитата:
Может создать раздельчик специально для таких дел?

Создать - можно, и, если RAM много - присмотритесь к совету alex52mail про RAM-диск.
С файлом гибернации (что вы обозвали "сон") - без вариантов, он у винды всегда на системном диске. Лучше уж вообще эту фичу отключить...


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

Всего записей: 2612 | Зарегистр. 12-10-2006 | Отправлено: 18:57 20-09-2021
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO  -  если RAM много - присмотритесь к совету про RAM-диск
Уточнение -  это первичная жизненная необходимость с выгодами выносить \Temp и \pagefile.sys оба в PrimoRamDisk.  
Работает с выгодой и на 1,5 гб памяти с \w7snx.vhd, и 2 гб памяти с \W10x32-1609LTF+Office2016.vhd  Просто к этому надо привыкнуть.
 
Выше просили о выборе диска - действительно лишнее что делается редко, а вот менять только в одном месте лучше  
set_PageFile+Temp.cmd
 
Удачи.

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

Всего записей: 1765 | Зарегистр. 04-09-2015 | Отправлено: 20:45 20-09-2021 | Исправлено: alex52mail, 13:24 21-09-2021
AVAV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят, помогите пожалуйста сделать для bat файла добавить обработку описания ПК и в зависимости от того, пустое описание или нет - надо запускать разные файлы.
   Если правильно понимаю, то необходимо модифицировать конструкцию вида For /f "delims=" %%d in ('wmic os get Description /value|findstr '") do ... Дальше у меня тупик, тем более, если описание пустое, то вывод все равно будет "Description="
   Заранее благодарен!

Всего записей: 19 | Зарегистр. 16-05-2003 | Отправлено: 14:30 21-09-2021
BorlandIMHO

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

Цитата:
необходимо модифицировать конструкцию вида


Код:
for /F "usebackq delims=" %%D in (`wmic os get Description /value^|findstr "="`) do set "%%D"
if "%Description%*"=="*" (echo Description пустой) else (echo Description не пустой)

Вместо эха вставляйте любую потребную обработку...
 
Updated 22/09/2021.
Были пропущены ^ перед | и закрывающая кавычка в скобках (первая строка).
Не на месте стояла первая * , перед % вместо после него.
Исправлено, спасибо тем, кто заметил.

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

Всего записей: 2612 | Зарегистр. 12-10-2006 | Отправлено: 16:05 21-09-2021 | Исправлено: BorlandIMHO, 22:22 22-09-2021
JohnRD

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
подскажите пожалуйста как развернуть путь где лежат файлы, а не откуда запускается скрипт

Код:
 
@echo off
for /F "usebackq tokens=*" %%C in (`dir /B "\\srv\soft\certs\*.cer"`) do echo %%~fC
 

 
~f добавляет путь где лежит cmd
 
вывод
Z:\Scripts\3\44DEC15A884E55B68090C5F40EEB9C2037421009.cer
Z:\Scripts\3\EE126B38319A010F398A238225454BCB7F562420.cer
 
 
 
 
Добавлено:
BorlandIMHO
 
dir /B /S похоже

Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 16:30 21-09-2021
BorlandIMHO

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

Цитата:
~f добавляет путь где лежит cmd

Хреново, на самом деле. Не знал такой особенности при работе с сетевыми путями...
В принципе, я обычно делаю каталог с обрабатываемыми файлами текущим и работаю с именами файлов без путей:

Код:
pushd "\\SRV\Share\folder with certs"
for /F "usebackq tokens=*" %%C in (`dir /B "*.crt"`) do (
certutil -f -addstore "addressbook" "%%~C"
popd
)


Цитата:
/S похоже

Это как бы решает проблему, но мне такие "костыли" не нравятся. В данном конкретном случае - в папке лежат только обрабатываемые сертификаты и нет бешеного уровня вложенности, косяки вылезут навряд ли.
Но в качестве именно общего решения - неприемлемо. Либо как выше, либо для получения полного пути дописывать путь в сетевую папку по-другому:
Код:
set "CERTS_FOLDER=\\SRV\Share\folder with certs"
for /F "usebackq tokens=*" %%C in (`dir /B "%CERTS_FOLDER%\*.crt"`) do (
certutil -f -addstore "addressbook" "%CERTS_FOLDER%\%%~C"
)



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

Всего записей: 2612 | Зарегистр. 12-10-2006 | Отправлено: 17:48 21-09-2021
AVAV

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

Цитата:
for /F "usebackq delims=" %%D in (`wmic os get Description /value|findstr "=") do set "%%D"
if "%Description*%"=="*" (echo Description пустой) else (echo Description не пустой)
 
Вместо эха вставляйте любую потребную обработку...

 
Спасибо, попробовал. Пишет "Непредвиденное появление |"
Добавил разные кавычки внутри с обеих сторон (`"wmic os get Description /value|findstr "="'), пропускает, но дальше по обработке, например эхо не выводится.

Всего записей: 19 | Зарегистр. 16-05-2003 | Отправлено: 17:53 21-09-2021
lexapass



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JohnRD
BorlandIMHO
 
Команда FOR позволяет напрямую обрабатывать файлы без костылей типа dir.
Это первое, что идет в справке к ней по FOR /?

Код:
@echo off
for %%C in ("\\srv\soft\certs\*.cer") do echo %%~fC

Всего записей: 567 | Зарегистр. 11-10-2004 | Отправлено: 18:36 21-09-2021
Fenrizz



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

Цитата:
Спасибо, попробовал. Пишет "Непредвиденное появление |"  

| надо экранировать крышечкой ^|
 
 
Добавлено:
JohnRD
Так нормально?  

Цитата:
for /F "usebackq tokens=*" %%C in (`dir /B /S "\\srv\soft\certs\*.cer"`) do echo %%~C  


Всего записей: 689 | Зарегистр. 12-09-2017 | Отправлено: 19:10 21-09-2021 | Исправлено: Fenrizz, 19:13 21-09-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 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 193 194 195 196 197 198 199 200 201

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd
Maz (20-06-2024 22:42): Командная строка, батники, сценарии - bat, cmd (7 часть)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru