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

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

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



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

Цитата:
Pasha_ZZZ, так в буфер пишется всё, а не только stdout  

Вы @ перед командой не забыли поставить?  

Код:
(for /L %t in (0,1,1) do @echo %t)|clip  

Всего записей: 410 | Зарегистр. 12-09-2017 | Отправлено: 07:50 17-08-2021 | Исправлено: Fenrizz, 08:06 17-08-2021
Baltazar500



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

Код:
echo OFF
где-нибудь в начале скрипта
наверное
Код:
@echo OFF
? Этот вариант в связке с for я кстати пробовал ещё до написания прошлого поста  и результат был тем же самым о котором я написал выше.

Цитата:
И да, в варианте от Pasha_ZZZ, скопипащенном непосредственно из поста, ничего лишнего в буфер не попадает именно засчёт @ перед echo.  
А вот собаку перед echo в примере Pasha_ZZZ я проглядел, каюсь :/ Этот пример действительно работает как надо.
 
Fenrizz, забыл
 
ОК. Теперь задача чуть усложняется. Как это добро одновременно отправить в буфер обмена, stdout консоли и в файл ?

Всего записей: 1736 | Зарегистр. 19-09-2011 | Отправлено: 09:19 17-08-2021 | Исправлено: Baltazar500, 09:21 17-08-2021
Fenrizz



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

Цитата:
ОК. Теперь задача чуть усложняется. Как это добро одновременно отправить в буфер обмена, stdout консоли и в файл ?

Одновременно никак, наверное, только с помощью объединения нескольких команд.

Код:
(for /L %t in (0,1,1) do @echo %t)>file.txt & type file.txt & type file.txt|clip  

Всего записей: 410 | Зарегистр. 12-09-2017 | Отправлено: 09:50 17-08-2021 | Исправлено: Fenrizz, 09:52 17-08-2021
BorlandIMHO

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

Цитата:
Как это добро одновременно отправить в буфер обмена, stdout консоли и в файл ?

В 2 назначения можно посредством утилиты tee (виндовый порт есть в CoreUtils), она выводит текст в stdout и его копию в файл, остаётся возможность перенаправления stdout в clip.
В 3 одновременно - штатные способы, насколь я знаю, отсутствуют. Пишите новую утиль либо пользуйтесь костылями (сначала вывод в файл, а потом уже из него в буфер и на экран), как предложил Fenrizz.
 


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

Всего записей: 1244 | Зарегистр. 12-10-2006 | Отправлено: 11:30 17-08-2021
KOLT2020



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

Всего записей: 92 | Зарегистр. 06-01-2020 | Отправлено: 20:08 17-08-2021 | Исправлено: KOLT2020, 17:26 18-08-2021
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, пожалуйста подскажите, каким образом осуществить следующие действия с помощью пакетного сценария без привлечения сторонних утилит:
1. Открыть редактор реестра в необходимой ветке.
2. Открыть редактор реестра в необходимом ключе.
Буду благодарен за Вашу помощь.
 
Добавлено:
KOLT2020
 

Цитата:
cmd для удаления защищенной-скрытой ветки реестра Win 10 Tweaker

 
Я не сторонник "умных твикеров" операционной системы, проверить данную утилиту не могу, но если ветка реестра создаётся с правами TrustedInstaller, то без привлечения сторонних утилит подобное (стандартное) действие невозможно, без "ручного" редактирования прав на ветку реестра.

Всего записей: 657 | Зарегистр. 19-02-2008 | Отправлено: 02:35 18-08-2021 | Исправлено: Artem_Butenko, 02:36 18-08-2021
Pasha_ZZZ



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

Цитата:
1. Открыть редактор реестра в необходимой ветке.


Цитата:
REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit /v LastKey /t REG_SZ /d <ключ_для_открытия> /f
regedit
Формат параметра можно заранее подсмотреть.

Цитата:
2. Открыть редактор реестра в необходимом ключе.

Что это и как - никому неизвестно.

Всего записей: 10072 | Зарегистр. 11-03-2002 | Отправлено: 03:54 18-08-2021 | Исправлено: Pasha_ZZZ, 03:54 18-08-2021
Artem_Butenko



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

Цитата:
REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit /v LastKey /t REG_SZ /d <ключ_для_открытия> /f
regedit  

 
Видел подобный пример на другом форуме. Вопрос? Каким образом открыть редактор в необходимой ветке, в Вашем случае: "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit"?

Всего записей: 657 | Зарегистр. 19-02-2008 | Отправлено: 06:07 18-08-2021
KOLT2020



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

Всего записей: 92 | Зарегистр. 06-01-2020 | Отправлено: 07:07 18-08-2021 | Исправлено: KOLT2020, 17:25 18-08-2021
KiloSub



Запрет на пост
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Например

Код:
 
@echo off
 
set "Target=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules"
 
tasklist | find "regedit.exe" && taskkill /f /im regedit.exe
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v "LastKey" /t REG_SZ /d "%Target%" /f
 
start regedit  
 

Всего записей: 386 | Зарегистр. 30-05-2020 | Отправлено: 07:15 18-08-2021
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как направить в файл - но чтобы созданный файл cmd.txt был стразу UT8
cmd /? > cmd.txt
 
Удачи.

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

Всего записей: 1129 | Зарегистр. 04-09-2015 | Отправлено: 13:36 19-08-2021
Pasha_ZZZ



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

Цитата:
chcp 65001 & cmd /? > cmd.txt

Всего записей: 10072 | Зарегистр. 11-03-2002 | Отправлено: 14:13 19-08-2021
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ  Спасибо.
В русской системе - и  65001 и 437 - все создают 1251, а просто cmd /? > cmd.txt  создает 866
 
Перегружусь, попробую в инглиш системе где не UTF-8 фиалы превращают русский в кроказябры.
 
Удачи.

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

Всего записей: 1129 | Зарегистр. 04-09-2015 | Отправлено: 19:19 19-08-2021
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail
Если устроит UTF16LE(1200) - то cmd /u /? >cmd.txt
Или можно ещё извратиться и позвать powershell для конвертации вывода cmd...

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

Всего записей: 1244 | Зарегистр. 12-10-2006 | Отправлено: 19:47 19-08-2021
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
C:\Users\w11Ent132FullUUP>chcp 65001 && cmd /?> d:\cmd65.txt
Active code page: 65001

В en-US системе создает файл только 1252 - т.е. как и ранее создает не указанное а системное.
 
BorlandIMHO
cmd /u /? >cmd.txt  -  создает UTF16LE(1200) - но cmd был указан просто как пример переправления.
А надо из одного скрипта передавать в файлы русский и в ru-RU и в en-US системах.  А в не UTF-8 файлах - русский превращается в крозябры.  
Вот и морокую как этого избежать.
 
Удачи.

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

Всего записей: 1129 | Зарегистр. 04-09-2015 | Отправлено: 22:03 19-08-2021 | Исправлено: alex52mail, 22:06 19-08-2021
BorlandIMHO

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

Цитата:
не UTF-8 файлах - русский превращается в крозябры.

Вы не правы. Кодировка UTF16LE существенно отличается от UTF8, но, тем не менее, вполне себе читабельна даже в штатном "Блокноте". Если вы видите "крозябры" - значит чем-то не тем смотрите...
 
Более того, файлы в 1251/866 тоже вполне себе могут читаться в винде {2000 и свежее} с любой локализацией. Вопрос в том, чем...
Консоль, к примеру, вполне себе юникодна. И вполне способна к отображению русского (1251/866 и даже 20866{"в девичестве" KOI8 Rus}) текста, даже без установки поддержки русского языка (достаточно правильного chcp)...
 
65001 нужен, по большому счёту, только если необходимо работать с текстом, содержащим одновременно несколько языков (например: украинский, немецкий и японский) либо с символами, отсутствующими в ANSI/OEM кодировке (например, &#1421; или &#1758;).
 
 
P.S.
Оказывается, руборд, в отличие от виндовой консоли, не умеет отображать юникод...
Собственно, картинка с символами 1421 и 1758 из charmap, чтоб было понятно о чём вообще речь:


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

Всего записей: 1244 | Зарегистр. 12-10-2006 | Отправлено: 23:23 19-08-2021 | Исправлено: BorlandIMHO, 23:50 19-08-2021
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня в en-US системах w8 w10 и w11 - файлы с русским читаются (блокнот, AkelPad, Lister) при открытии - но при сохранении - текст превращается в ??????   Но при сохранении файла в UTF-8  - русский остается читаемым.
 
1251 файл count.cmd  с русским - в консоли en-US w11 представляется так и по другому в консоли Ru w10 - хотя нормально читается в блокнот, AkelPad, Lister
 
Вот и озадачился как со скрипта перенаправлять русский чтобы он читался.
 
Удачи.

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

Всего записей: 1129 | Зарегистр. 04-09-2015 | Отправлено: 00:10 20-08-2021 | Исправлено: alex52mail, 00:53 20-08-2021
BorlandIMHO

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

Цитата:
 в консоли Ru w10

Показывает ересь, но хотя бы видна основа (ANSI1251), хотя и сильно покорёженная.
Если перед "type d:\count\count.cmd" ввести "chcp 1251" - увидите русский текст (в той степени, что он не покорёжен)...
Если дадите сам файлик - можно будет сказать точнее, что там и как.
 
Про перенаправление вывода: кодировка итогового файла зависит от того, в какой кодировке выдаёт текст программа-источник.
Касательно конкретно cmd.exe - определяется локализацией системы и текущей кодовой страницей консоли/ключом запуска "/u": при /u русская винда выдаёт русский в cp1200, при 866/1251 русский в соответствующей кодовой странице, при 65001 - английский в  cp65001, при всех остальных CP - английский в cp437. Английсая винда - выдаёт всегда английский, в соответствующей юникодной кодировке либо в 437.
Что и в какой кодировке выдаёт сферическая программа в вакууме и обращает ли она при этом внимание на текущую кодовую страницу консоли - мне неизвестно.
 

Цитата:
при сохранении - текст превращается в ??????

Если используемые средства редактирования портят текст - значит это либо хуёвые средства редактирования, либо кривые руки редактирующего...
Я лично обычно использую встроенный редактор FAR Manager - там проблем не видел, сохранение идёт в той же кодировке, в которой файл прочитан. Независимо от локализации системы...


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

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail
Чтоб понятнее было с кодировками:
demo.cmd
Код:
@echo off
chcp 1251
echo Это текст в кодировке ANSI1251
pause
chcp 866
echo ќв® ⥪бв ў Є®¤Ёа®ўЄҐ OEM866
pause
chcp 65001
echo Р-то текст РІ РєРѕРґРёСЂРѕРІРєРµ UTF8
pause
chcp 20866
echo ьФП ФЕЛУФ Ч ЛПДЙТПЧЛЕ KOI8R
pause
chcp 855
echo шеЦ еЁЖге л ЖЦ¦·бЦлЖЁ "OEM - Ж·б·РР·¤  еб ¦·¤·ЦФФ Ю"
pause
chcp 10007
echo ќто текст в кодировке "MAC - кириллица"
pause
chcp 28595
echo НвЮ вХЪбв Т ЪЮФШаЮТЪХ "ISO 8859-5 ЪШаШЫЫШжР"
pause
chcp 437
type %0
pause

Файлик сохранять "Блокнотом" в русской винде (т.е. кодировка самого файла demo.cmd д.б. ANSI1251).
Ну, или, воспользуйтесь, как и я, редактором FAR manager.
 
Показывает русский текст в консоли винды (свежее 2000) любой локализации (важно: для XP/2003 предварительно требуется донастроить консоль на использование юникодного шрифта отображения Consolas; для 2000 придётся ещё и ставить Consolas в систему и ковырять реестр), а после переключает консоль в cp437 (умолчальная кодовая страница для консоли англ. винды) и выводит сам себя "крозябрами".

Если перенаправить вывод команды echo в текстовый файл - получите текстовый файл в соответствующей кодировке.

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

Всего записей: 1244 | Зарегистр. 12-10-2006 | Отправлено: 14:43 21-08-2021 | Исправлено: BorlandIMHO, 16:15 21-08-2021
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, пожалуйста помогите решить некоторые вопросы.
1. Проверка наличия прав администратора в пакетном файле. Не знаю насколько корректно, но, работает следующий сценарий. Только вот, если пакетный сценарий запущен под учётной записью с правами администратора, но не с повышением прав (ПКМ на пакетном сценарии -> Запуск от имени администратора), то получаем сообщение об отсутствии требуемых прав.
2. Вывести список всех смонтированных в операционной системе дисков. В принципе устраивает простой вариант или немного сложнее. Только оба примера не предоставляют информацию о размере дисков, как это делает "diskpart".
3. Посчитать объём дискового пространства занимаемого указанным каталогом. Нашёл следующий пример. Только он выводит информацию в байтах и работает очень долго. Хотелось бы выводить информацию о занятом дисковом пространстве отдельно в Мб и Гб (двумя строками).
4. Возможность ввода для переменной Set буквы только смонтированных логических дисков (кроме системного) в латинице (при вводе других символов и цифр, а также более одной буквы) "перезапускать" запрос Set. Мой самый простой недаработанный вариант.
5. Перед выполнением команды xCopy, проверить достаточно ли места на диске, букву которого мы указали в пункте №4, чтобы полностью скопировать каталог из пункта №3. Если конечно подобное вообще возможно реализовать в пакетном сценарии.
6. Вывести с возможностью выбора (1, 2, 3, 4, 5 ...) содержимого ветки реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList". Хотя логичнее будет выполнить поиск в этой ветке по переменной %UserProfile%, а при нахождении выполнить изменение значения строкового параметра "ProfileImagePath" на Буква_диска_из_пункта_№_4:\Users\текущий_пользователь.
Буду Всем Вам благодарен за ценные советы.

Всего записей: 657 | Зарегистр. 19-02-2008 | Отправлено: 23:38 28-08-2021 | Исправлено: Artem_Butenko, 05:41 30-08-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