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

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

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

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

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

Advanced 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

Всего записей: 1244 | Зарегистр. 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?
Запустить и всё будет Ок?

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

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

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


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

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



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

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

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


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

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

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

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

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

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

Всего записей: 1244 | Зарегистр. 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 не самый подходящий, там емул качает и прочее движение.
Может создать раздельчик специально для таких дел? Туда бы ещё виртуальную память и сон.


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

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



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

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

Всего записей: 3459 | Зарегистр. 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

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

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

Full 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).

Всего записей: 594 | Зарегистр. 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 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

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

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

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

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

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

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


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

Всего записей: 1244 | Зарегистр. 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 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1131 | Зарегистр. 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

Advanced 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

Всего записей: 1244 | Зарегистр. 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

Advanced 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

Всего записей: 1244 | Зарегистр. 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

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



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

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

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

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


Всего записей: 410 | Зарегистр. 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

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