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

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

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

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

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



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

Цитата:
Быстрее перенаправить вывод в файл и подсунуть затем его FOR'у.

Всегда считал, еще с давних времен HDD, что запись временного файла на диск с последующим его чтением и удалением, это не про скорость. Посему, при возможности, всегда предпочитал фильтровать строки с помощью IF. Изначально AI Gemini мне так и предложил:

Код:
SETLOCAL EnableDelayedExpansion
FOR /F "Delims=" %%I IN ('REG QUERY "%ShellFolders%" /V "%~1" 2^>nul') DO (
  SET Line=%%I
  IF "!Line:REG_SZ=!" NEQ "!Line!" SET Line=%%I
)

И тут вопрос. А так можно? Разве оператор сравнения NEQ и ему подобные, это не для сравнения целых чисел? Тогда я лучше воспользуюсь IF, чем FIND.

Всего записей: 3775 | Зарегистр. 29-01-2005 | Отправлено: 19:35 26-07-2025
GCRaistlin



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

Цитата:
Всегда считал, еще с давних времен HDD, что запись временного файла на диск с последующим его чтением и удалением, это не про скорость. Посему, при возможности, всегда предпочитал фильтровать строки с помощью IF.

Не уловил, какая тут связь.
 

Цитата:
Разве оператор сравнения NEQ и ему подобные, это не для сравнения целых чисел?

Ими можно сравнивать и строки.

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

Всего записей: 4368 | Зарегистр. 18-04-2005 | Отправлено: 19:42 26-07-2025 | Исправлено: GCRaistlin, 19:44 26-07-2025
Fenrizz



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

Код:
START "ras1" ras.exe cluster
...
TASKKILL /F /FI "WINDOWTITLE eq ras1"  

 
И ещё ras можно установить как службу Windows и управлять ей через sc
https://infostart.ru/1c/articles/810752/

Всего записей: 697 | Зарегистр. 12-09-2017 | Отправлено: 11:15 05-08-2025 | Исправлено: Fenrizz, 12:23 05-08-2025
FiLinX



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ребят, а не знаете, нет ли такой команды, исполняющей функцию  -  предотвращения засыпания компа ?
ну, по типу как со многими плеерами, пока что-то в них играет  -  экран даже не погаснет
не знаю, мож в TASKKILL есть такое?

Всего записей: 3104 | Зарегистр. 05-05-2010 | Отправлено: 21:45 08-08-2025 | Исправлено: FiLinX, 21:46 08-08-2025
Inoz2000



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

Всего записей: 5476 | Зарегистр. 23-04-2009 | Отправлено: 23:59 08-08-2025
DeZz



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

Всего записей: 1356 | Зарегистр. 23-01-2006 | Отправлено: 09:48 09-08-2025
FiLinX



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeZz
спасибо за полезняшку)  знаем о ней, и о многом там хотелось бы поспрашать подробнее.. но да ладно
а вот что там в последних строках, ну, гиберка конечно у меня убита сразу была)  
и питание на всю - https://a.i.getapic.me/miag.jpeg, но в нём, для отключения Экрана выставлено 45 минут, и вот мне бы такую командочку, чтоб менять это когда нужно туда-обратно на Никогда
я думал можно как то через URI настроек это делать, для  ms-settings:powersleep
или через канонические имена Панели управления
 
но вот эта строка меня заинтересовала:
powercfg -change -disk-timeout-ac 0      :: Не отключать жесткий диск  
вот интересно даже, а может есть подобное и на монитор? ну типа  -display-timeout-ac 0
 
по сути, мне это хочеться для винХР, недобук с ней у меня круглосуточно включен с аптаймом по полгода и лежит закрытвм под прессом хлама на нём, с выводом на внешний монитор..  
и вот иногда, когда рядом на десятке очищаю зону от всяких зомбарей-кровососеров-снорков, нужно чтоб на соседнем мониторе с ХР был раскрыт гид прохождения на форуме каком либо, и чтоб экран не гас по таймеру..
и пока что, я там либо в потплеере какое нить радио запускаю, либо шарманку, - при них работает запрет засыпания..
кстати если в браузере запустить ютубину, при условии что курсор находится в поле плеера, то даже после окончания видоса  -  экран не потухнет!  но, это только лишь если курсор был на фрейме плеера, и если курсор с него увести, иль в фокусе встанет другое окно, то таймаут гашения таки наступает..
 
ещё я пользую принудительное затемнение дисплея
C:\WINDOWS\system32\scrnsave.scr
это чтоб ночью запустив для сна что нить, экран не лупил светом)
 
Добавлено:
оо.. кажись что то нашёл  -  https://docs.saltproject.io/en/3006/ref/modules/all/salt.modules.win_powercfg.html
правда там это для какой то соли ))
но вроде узрел, что надо не  -display-timeout-ac 0  а  -monitor-timeout-ac 0
теперь бы придумать триггерный батничек типа on-off, чтоб туда-сюда на 0 и 45 переключало..
 
ещё что-то было тут - http://www.cholv.ru/c-faq/faq/windows.html
но тут вроде лишь переключение самих схем питания

Всего записей: 3104 | Зарегистр. 05-05-2010 | Отправлено: 19:38 09-08-2025 | Исправлено: FiLinX, 06:56 10-08-2025
lexapass



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FiLinX
Для себя использую включение режима презентации.

Код:
@echo off
reg.exe query HKCU\Software\Microsoft\MobilePC\MobilityCenter /v RunOnDesktop >nul 2>&1 ||(
   reg.exe add HKCU\Software\Microsoft\MobilePC\MobilityCenter /v RunOnDesktop /t REG_DWORD /d 1 /f >nul
   reg.exe add HKCU\Software\Microsoft\MobilePC\AdaptableSettings /v SkipBatteryCheck /t REG_DWORD /d 1 /f >nul)
tasklist.exe | find /i "PresentationSettings.exe" >nul &&(PresentationSettings.exe /stop &call )||(start "" PresentationSettings.exe /start)
 


Всего записей: 574 | Зарегистр. 11-10-2004 | Отправлено: 21:18 09-08-2025
LZAA

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

      Задача: нужно произвести групповое переименование файлов в директории случайным образом. Но в названиях не должны использоваться цифры. Только одни буквы.  

Код:
@echo off&chcp 1251>nul
rem Переименовывает все .jpg в папке случайным образом
setlocal enableextensions enabledelayedexpansion
for /f "delims=" %%f in ('dir/b *.jpg') do (
call :random something&ren "%%f" !something!.jpg
)
goto :eof
:random
set /a something=%random%*%random%&set %~1=!something!&exit /b

 
   Этот код переименовывает в наборы цыфр. Можно ли его изменить таким образом, чтобы были буквы? Критическое требование - буквенные названия не должны совпадать, то есть они все должны быть разные, потому что OS не позволяет одинаковые названия файлов в одной директории.

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 02:01 16-08-2025
Simple Code



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

Всего записей: 302 | Зарегистр. 19-11-2022 | Отправлено: 04:04 16-08-2025 | Исправлено: Simple Code, 13:42 16-08-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
     Это работает. Но!...
 
      Моя проблема заключается в следующем.
      OS и приложения определённым образом сортируют файлы в директориях.
      Моя проблема - это сортировка по цыфрам в названиях по-умолчанию. 'Explorer' Windows этим почти 'не страдает', а вот приложения ведут себя по разному. Одни сортируют, другие нет.
      Эта сортировка выглядит таким образом:
 
      1
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
       2
       20
       21
       итд
 
     То есть изначальное расположение директории нарушается. Но меня это не устраивает, поэтому я хочу сначала изменить названия файлов, а после этого передать их в приложение для того, чтобы приложение их не сортировало.
     Но, к сожалению, предложенный код 'грешит' тем же самым - он перед переименованием сортирует файлы по номерам. Интересно то, что некоторые приложения не сортируют предложенные файлы.
     Обнаружилось ещё одно очень неприятное обстоятельство: после замены цыфр на буквы Explorer' Windows разсортировал названия по алфавиту. Получается так, что такое переименование не позволяет сохранить изначальный порядок файлов в директории. Всвязи с этим возникает главный вопрос - можно ли что-то придумать с переименованием файлов таким образом, чтобы любая сортировка не меняла исходный порядок файлов в директории?
 
     Вопросы и пожелания.
 
     1. Можно ли сделать так, чтобы пакетный код не сортировал названия в цыфрах?
     2. Можно ли удалить из кода манипуляции с расширением. То есть меняются только названия файлов, а расширение файлов просто остаётся исходное.
     3. Код не работает с кирилическими названиями директории. Можно ли сделать так, чтобы код понимал и 'латиницу' и 'кирилицу' одновременно? Это не критично - директорию нетрудно переименовать.

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 11:56 16-08-2025 | Исправлено: LZAA, 14:55 16-08-2025
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA
 Вопросы и пожелания.
если от powershell не шарахаться как от чумного, то все пожелания - легко...
 

Цитата:
1. Можно ли сделать так, чтобы пакетный код не сортировал названия в цыфрах?

пакетный код - пожалуйста, но тут вопрос в самом приложении, в котором будет отображаться необходимое расположение.
 

Цитата:
2. Можно ли удалить из кода манипуляции с расширением. То есть меняются только названия файлов, а расширение файлов просто остаётся исходное.

легко
 

Цитата:
3. Код не работает с кирилическими названиями директории. Можно ли это преодолеть? Это не критично - директорию нетрудно переименовать.

в какой кодировке необходимо, в той и будет работать. Естественно, здесь имеются в виду кодировки доступные в Windows...

Всего записей: 3245 | Зарегистр. 03-02-2009 | Отправлено: 12:23 16-08-2025
LZAA

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

        Код кодом, но как Вы думаете, что можно придумать для обхода описанной мною проблемы?
        Немного повторюсь.
      Если я из 'Explorer' передаю в приложение файлы с цыфровыми названиями, то приложение их сортирует и исходный порядок файлов нарушается. Что можно попробовать сделать с файлами, чтобы при передаче в приложение их расположение не менялось? Конечно, мы не знаем заранее, 'как себя поведёт' приложение, но это можно будет проверить после изменения файлов.

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 12:51 16-08-2025
GCRaistlin



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

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

Всего записей: 4368 | Зарегистр. 18-04-2005 | Отправлено: 13:00 16-08-2025
LZAA

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

                          GCRaistlin
 
     Bravo!!! Это красивое решение и оно работает!
 
     Сделал - 01, 02, 03, 04, 05, 06, 07, 08, 09.

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 13:17 16-08-2025
www_world

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

Цитата:
если от powershell не шарахаться как от чумного, то все пожелания - легко...  

A вы его в батник запихивайте и большинство даже не заметит этого (при условии, конечно, что PS код будет выполняться и на достаточно неновых версиях PS. Требования новейших версий PS, по сути, и отпугивает многих от ps скриптов, тогда как 95% задач массового юзера можно выполнить на очень неновых версиях PS).
 
LZAA

Цитата:
1. Можно ли сделать так, чтобы пакетный код не сортировал названия в цыфрах?
     2. Можно ли удалить из кода манипуляции с расширением. То есть меняются только названия файлов, а расширение файлов просто остаётся исходное.
     3. Код не работает с кирилическими названиями директории. Можно ли сделать так, чтобы код понимал и 'латиницу' и 'кирилицу' одновременно? Это не критично - директорию нетрудно переименовать.  

 Предложу, пожалуй, небатниковый метод, так сказать, до кучи. Тем более он наглядный, в хорошо известной "оболочке".
Речь идет о Тотал Коммандере.
Устанавливаем контентный плагин Misc, если он у вас не установлен.
Выделяем тем или иным способом файлы, которые планируем переименовать
Вызываем инструмент переименования (Ctrl-M)
Заполняем поля, как на скрине*:

Нажимаем, Старт.
_____________________
* Это пример. Все можно подстроить под свой вкус.
Имеет место некоторая чрезжопность с обработкой расширений файлов, но это связано с врожденной кривизной регэкспов в TC (по крайней мере, я ней сталкивался не раз в самых неожиданных местах и ранее).
Напрямую, обработать (или оставить как есть) расширения файлов с использованием регэкспов в данном случае мне не удалось. Отсюда такая странная, на первый взгляд формат строка и строка регэкспа.
Регэкспе
12 - число символов в имени файла (3 цифры счетчика, знак подчеркивания и 8 рандомных букв (из плаина Misc).

 
Добавлено:
Можно еще проще, используя TC + любой контентный плагин для вычисления хэшей (LotsOfHashes, HashSys, wdHash, ...) подходящей длины (но можно и укоротить их при желании ).
Например, с плагином wdHash:

Всего записей: 630 | Зарегистр. 04-11-2018 | Отправлено: 20:05 16-08-2025 | Исправлено: www_world, 21:03 16-08-2025
LZAA

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

       Про 'Misc' я знаю.
       https://ghisler.ch/board/viewtopic.php?t=6541
       Он у меня есть. 'RegEx' я сам не сделал бы. Ваш код пригодится. Особенно полезна мне иллюстрация для 'Define Counter'. Теперь понятно, как этим пользоваться.
       Самое изящное решение - это, конечно, добавить ведущий ноль к первым девяти цифрам. Этого достаточно и нетрудно сделать вручную.
       

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 22:13 16-08-2025
www_world

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA
В вашем случае вообще можно обойтись лишь счетчиком при переименовании, не прибегая к плагинам. Результатом будет буквенная строка, в которой символы (только буквы латиницы) будут идти в порядке последовательного возрастания, как расположения букв в алфавите, так и в порядке номеров их цифровых кодов. То есть, ваша проблема - различия сортировок - нумерической и естественной (по алфавиту) исчезнет, a цифры не будут использоваться в именах, имена будут строго уникальными, с исходными расширениями. Длина имен может быть произвольной. При этом все остальные ваши условия будут выполнены:

(если хотите чтобы разных букв в именах файлов было больше - увеличивайте шаг счетчика до тех пор пока это вас устроит)

Всего записей: 630 | Зарегистр. 04-11-2018 | Отправлено: 23:05 16-08-2025
LZAA

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

     OK. Можно и так.

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 23:58 16-08-2025
Fenrizz



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

Цитата:
ребят, а не знаете, нет ли такой команды, исполняющей функцию  -  предотвращения засыпания компа ?  

Есть вариант с записью случайных данных в файл

Код:
:repeat
@echo %RANDOM% > tmp.txt
ping -n 8 127.0.0.1 > NUL
goto repeat  

Всего записей: 697 | Зарегистр. 12-09-2017 | Отправлено: 21:13 20-08-2025
Открыть новую тему     Написать ответ в эту тему

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

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