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

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

Модерирует : 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

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

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

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

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

Цитата:
Yes, Robocopy works on Windows XP, but it's not built-in; you need to download it as part of the Windows Server 2003 Resource Kit Tools, then copy the robocopy.exe file into your C:\Windows\System32 folder, allowing you to use its advanced command-line features for reliable file replication and backups.  

Скачать Windows 2003 Reskit Tools
 
robocopy.xp.zip

Всего записей: 3852 | Зарегистр. 29-03-2016 | Отправлено: 04:27 28-12-2025 | Исправлено: bomzz, 07:28 28-12-2025
ErnestoChegivara



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Simple Code
У автора на гитхабе когда то была ссылка
https://ipfs.io/ipfs/QmPFVJQZ54xuCQ54B5DdfyejSBKTSLbHSKtF9YpunsRpWh

Всего записей: 215 | Зарегистр. 16-04-2010 | Отправлено: 05:48 28-12-2025
bomzz

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

Всего записей: 3852 | Зарегистр. 29-03-2016 | Отправлено: 10:02 28-12-2025 | Исправлено: bomzz, 10:11 28-12-2025
MaraGame24



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые скриптоделы
 
Как мне через BAT или CMD сделать\задать доступ к ветке реестра "HKEY_CURRENT_USER\Software\WinXAM" "Только для чтения" для всех ???

Всего записей: 3044 | Зарегистр. 25-11-2023 | Отправлено: 20:05 15-01-2026 | Исправлено: MaraGame24, 18:50 19-01-2026
LZAA

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

   Необходимо передать в stdout текст. Как проще всего это сделать? Чтобы не из файла, а прямо из 'cmd'.

Всего записей: 2725 | Зарегистр. 09-01-2010 | Отправлено: 19:32 18-01-2026
MKN



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

Цитата:
Как мне через BAT или CMD сделать\задать доступ к ветке реестра  

С помощью доп. утилит типа SubInACL
https://winitpro.ru/index.php/2016/08/24/kak-pomenyat-vladelca-vetki-reestra-iz-komandnoj-stroki/

Всего записей: 5271 | Зарегистр. 21-04-2005 | Отправлено: 20:00 18-01-2026
MaraGame24



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MKN
Цитата:
С помощью доп. утилит типа SubInACL
Это не работает у меня на Win11...
Нашёлся другой способ очень простой и рабочий...
Спасибки что откликнулись

Всего записей: 3044 | Зарегистр. 25-11-2023 | Отправлено: 20:25 18-01-2026
LZAA

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

  Команда:
 
  'yt-dlp.exe' URL -o filename
 
  Обычно 'filename' пишут 'руками'. Я пытаюсь это дело немного 'автоматизировать'.
  Я могу получить 'filename' в stdout пакетной командой вида 'Команда 1 | Команда 2'.
  Можно ли после этого его передать 'yt-dlp.exe'? Для этого вроде аргумент 'set' как-то можно использовать.

Всего записей: 2725 | Зарегистр. 09-01-2010 | Отправлено: 22:22 18-01-2026
MKN



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

Цитата:
Нашёлся другой способ очень простой и рабочий...  

Поделись пожалуйста.

Всего записей: 5271 | Зарегистр. 21-04-2005 | Отправлено: 09:56 19-01-2026
Smitis



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

Цитата:
Можно ли после этого его передать 'yt-dlp.exe'? Для этого вроде аргумент 'set' как-то можно использовать.

Получить вывод команд через for

Код:
for /f "usebackq delims=" %%a in (`Команда 1 ^| Команда 2`) do set "filename=%%a"

а дальше уже использовать переменную

----------
Разум когда-нибудь победит

Всего записей: 3881 | Зарегистр. 09-02-2003 | Отправлено: 08:38 20-01-2026
Goodwin7



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть батник, там просто регистрируются файлы в папке через regsvr32. Можно как то сделать так чтобы те файлы что надо зарегистрировать регестрировались и из подпапок основной папки, которая является начальной. Так как щас в батнике для каждой конкретной папки задаётся точный путь.  
 
Например  
CD asdf
for %%I in (*.dll) do regsvr32 /s "%%I"
 
в папке asdf есть подпапки тоже с dll которые должны зарегистрироваться.

Всего записей: 128 | Зарегистр. 10-12-2022 | Отправлено: 22:23 24-01-2026
Simple Code



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

Код:
 
CD asdf
for /r %%I in (*.dll) do regsvr32 /s "%%I"
 

Всего записей: 333 | Зарегистр. 19-11-2022 | Отправлено: 22:53 24-01-2026
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
                            Smitis
 
    Можно ли написать подробнее для непрограммиста? У меня 'cmd' пишет:
 
    for /f "usebackq delims=" %%a in (`Команда 1 ^| Команда 2`) do set "filename=%%a"
%%a was unexpected at this time.
 
   Я понимаю, что команда 'неполная', но почему система на '%%a' ругается?

Всего записей: 2725 | Зарегистр. 09-01-2010 | Отправлено: 00:02 03-02-2026
www_world

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

Всего записей: 681 | Зарегистр. 04-11-2018 | Отправлено: 06:00 03-02-2026
LZAA

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

     Когда есть код для 'cmd' c '%', то для пакетного файла я '%' дублирую. А тут не догадался, что данный код для пакетного файла. Теперь исправил. Но как  
     
Цитата:
дальше уже использовать переменную

  не пойму. Если выполнить:
 
     for /f "usebackq delims=" %a in (`Команда 1 ^| Команда 2`) do set "filename=%a" | yt-dlp URL -o filename
 
    то имя сохранённого файла получается 'filename'.
 
 

Всего записей: 2725 | Зарегистр. 09-01-2010 | Отправлено: 12:10 03-02-2026
BorlandIMHO

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

Цитата:
имя сохранённого файла получается 'filename'

yt-dlp сохраняет файл под тем именем, которое вы ему задали в команде, что вполне ожидаемо...
Если нужно имя, выдернутое из for, то либо  

Код:
... do set "filename=%~a" | yt-dlp URL -o "%filename%"

либо лучше сразу

Код:
... do yt-dlp URL -o "%~a"

Всего записей: 3141 | Зарегистр. 12-10-2006 | Отправлено: 12:48 03-02-2026 | Исправлено: BorlandIMHO, 12:52 03-02-2026
LZAA

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

     Что-то с кодом не то.
   Исходные условия. Мы выполняем в 'cmd':
 
    Команда 1 | Команда 2
 
    Например.
     
   Команда 1= aa bb/cc
   Команда 2= dd -e/ -f
 
   В результате в stdout выводится - xxx. Это значение надо передать - yt-dlp URL -o xxx.
   На практике.
   
   for /f "usebackq delims=" %a in (`Команда 1 ^| Команда 2`) do set "filename=%a" | yt-dlp URL -o "%filename%"
 
    Имя сохранённого файла получается '%filename%'
 
   for /f "usebackq delims=" %a in (`Команда 1 ^| Команда 2`) do yt-dlp URL -o "%~a"
 
   В директории создаётся папка с именем 'aa bb'. В ней создаётся папка с именем 'cc # dd -e'. В ней находится сохранённый файл с именем '-f'.

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA
 
Попробуйте экранировать кавычки обратным слэшем «\» или сделать удвоение «""».
-o \"%~a\"
-o ""%~a""

Всего записей: 333 | Зарегистр. 19-11-2022 | Отправлено: 19:22 03-02-2026
Smitis



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

Цитата:
Имя сохранённого файла получается '%filename%'


Код:
setlocal enabledelayedexpansion
for /f "usebackq delims=" %a in (`Команда 1 ^| Команда 2`) do set "filename=%a" | yt-dlp URL -o "!filename!"


----------
Разум когда-нибудь победит

Всего записей: 3881 | Зарегистр. 09-02-2003 | Отправлено: 19:33 03-02-2026
LZAA

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

                Smitis
               Simple Code
 
     К сожалению, всё это не помагает. Здесь какая-то 'экзистенциональная' ошибка.
     После выполнения:
 
     setlocal enabledelayedexpansion & for /f "usebackq delims=" %a in (`Команда 1 ^| Команда 2`) do set "filename=%a" | yt-dlp URL -o "!filename!"  
 
    в окне 'cmd' появляется вторая команда:
 
    set "filename=Команда 1 | Команда 2"   | yt-dlp URL -o "!filename!"  
 
   Может, что так и должно быть, на файл сохраняется с именем '!filename!'. Складывается впечатление что код  'Команда 1 | Команда 2' просто не выполняется при этом.
 

Всего записей: 2725 | Зарегистр. 09-01-2010 | Отправлено: 21:59 03-02-2026
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии: bat, cmd


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

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

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru