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

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

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

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

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
 
Посмотрел. Ещё бы понять, как в открытое окно консоли "перетащить" группу файлов (или каталогов) отсортировать из них (или в каталогах) исполняемые файлы и выполнить команду внесения изменений в реестр. Увы, признаю, в этом знаний не хватает. Прошу прощения за

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 05:02 26-07-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Группу выделенных перенести, вероятно, не получится: в консоль вставляется всегда имя файла, за которое группу тащили. Ну, а если перетащили каталог, то обработать именно исполняемые в нем не сложно: перебираем в нем циклом файлы по маске "*.exe".

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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 11:17 26-07-2021
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
 
Пожалуйста, покажите хотя бы наброски. Ибо в этом, клянусь не силён. Нашёл на дружественном форуме пример, но он подразумевает перетаскивание файла на сам "*.cmd-файл".
Пожалуйста, помогите разобраться с вопросом.

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 06:28 28-07-2021
GCRaistlin



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

Код:
 
for /r "%~f1" %%A in (*.exe) do echo %%A
 


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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 10:20 28-07-2021
Artem_Butenko



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

Цитата:
for /r "%~f1" %%A in (*.exe) do echo %%A  

 
Так ведь данный пример работает по схожему принципу с приведённым мною выше. Только вот нужно перетащить каталог не на сам "*.cmd-файл", а в открытое окно консоли.

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 18:56 28-07-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
При перетаскивании в окно консоли получится то же самое. Если, конечно, в нем заранее будет напечатано имя батника, который все это обрабатывает.

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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 19:41 28-07-2021
Artem_Butenko



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

Цитата:
При перетаскивании в окно консоли получится то же самое. Если, конечно, в нем заранее будет напечатано имя батника, который все это обрабатывает.

 
Теперь я совсем запутался. Т.е., один пакетный файл будет вызывать другой, но как? Да, и получим список исполняемых файлов, как тогда их передать команде REG ADD?

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 20:04 28-07-2021
GCRaistlin



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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 20:31 28-07-2021 | Исправлено: GCRaistlin, 20:32 28-07-2021
Artem_Butenko



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

Цитата:
Вы пишете имя батника, а затем перетаскиваете экзешник, который нужно обработать, или каталог, содержащий экзешники.
 
Добавлено:
Получение имени экзешника в том и другом случае будет несколько различаться, но не принципиально.
 

 
Как я понял создаю основной пакетный файл, например "Start.cmd" с содержанием:
Call Run.cmd.
 
Рядом создаю вспомогательный пакетный файл, например "Run.cmd" с содержанием:
for /r "%~f1" %%A in (*.exe) do echo %%A
Pause
 
Запускаю "Start.cmd" и получаю:
 
C:\Test>Call Run.cmd
 
C:\Test>for /R "" %A in (*.exe) do echo %A
Слишком длинный полный путь к "".
 
C:\Test>Pause
Для продолжения нажмите любую клавишу . . .

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 20:58 28-07-2021 | Исправлено: Artem_Butenko, 21:01 28-07-2021
Elfajyum



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

Код:
set prog=test.exe
setlocal enabledelayedexpansion
tasklist /fi "imagename eq !prog!" | findstr /i /c:"!prog!" >nul
if %errorlevel%==0 (
taskkill /im !prog!
)
endlocal

Вот это:

Код:
Set /p x="Выйти из Test - Да (y) или Нет (n)"  
if defined X set X=
:Query
set /p "X=Y or N: "
setlocal enabledelayedexpansion
if /i not !X!==y if /i not !X!==n endlocal & goto :Query
if %x%==y taskkill /im test.exe
if %x%==n goto :eof

Т.е. нужно чтобы выход из программы происходил по запросу. Добавить choice не проблема, но надо без choice.

Всего записей: 8 | Зарегистр. 16-04-2021 | Отправлено: 20:59 28-07-2021 | Исправлено: Elfajyum, 07:34 29-07-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Зачем два файла-то? Естественно, будет ошибка: ведь файл рассчитан на запуск с параметром, а вы запустили без.
Прочтите справку к FOR (for /?).

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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 21:13 28-07-2021
Artem_Butenko



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

Цитата:
for /r "%~f1" %%A in (*.exe) do echo %%A

 

Цитата:
Зачем два файла-то? Естественно, будет ошибка: ведь файл рассчитан на запуск с параметром, а вы запустили без.
Прочтите справку к FOR (for /?).

 
Из справки:

Цитата:
 
FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры]
 
    Выполнение команды для каталога [диск:]путь, а также для всех
    подкаталогов этого пути.  Если после ключа /R не указано имя
    каталога, используется текущий каталог. Если набор - это
    одиночный символ точки (.), команда просто перечисляет дерево каталогов.

 
Здесь понятно, но почему концепт не работает при перемещении файлов в окно запущенного пакетного файла. Простите, я совсем запутался. Может нужно использовать"Set"?

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 21:48 28-07-2021 | Исправлено: Artem_Butenko, 21:51 28-07-2021
kot1313



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

Цитата:
 почему концепт не работает при перемещении файлов в окно запущенного пакетного файла

Наскока я понимаю, когда вы запустили cmd файл, то он выполнил Ваш приказ (код, алгоритм), который в нем записан. и Усё.  
Если в конце код в  файле стоит пауза, то консоль просто ждёт следующих Ваших приказов.  
 
Но перетаскивание на это - уже открытое окно консоли - не запустит  
Ваш уже выполненный приказ по новой !
 
А вот перетаскивание на сам cmd файл запустит по новой тот приказ, который записан в этом cmd файле.  
Но уже в новом окне консоли  

Всего записей: 2394 | Зарегистр. 11-12-2002 | Отправлено: 22:00 28-07-2021 | Исправлено: kot1313, 22:01 28-07-2021
Artem_Butenko



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

Цитата:
А вот перетаскивание на сам cmd файл запустит по новой тот приказ, который записан в этом cmd файле.  
Но уже в новом окне консоли

 
Уже мнения разделяются. Ключевая задача "перетащить файлы\каталоги не на пакетный файл, а в окно открытого пакетного файла". Это вообще реализуемо с моими "хотелками"?

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 22:09 28-07-2021 | Исправлено: Artem_Butenko, 22:10 28-07-2021
GCRaistlin



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

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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 22:14 28-07-2021
Artem_Butenko



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

Цитата:
выводит имена экзешников в каталоге, имя которого передается через параметр

 
Хорошо, только имя каталога неизвестно. На разных рабочих станциях он может называться как угодно. Как дальше тогда быть?
 
Может я неправильно ранее сформулировал задачу, исправляюсь (тезисно):
1. Запускаем пакетный файл.
2. "Перетаскиваем" в открытое окно консоли файлы\каталоги.
3. Отсеиваем все файлы, кроме исполняемых.
4. Выполняем добавление в определённую ветку реестра (Reg Add), отсортированных исполняемых файлов.

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 22:31 28-07-2021 | Исправлено: Artem_Butenko, 22:39 28-07-2021
GCRaistlin



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

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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 22:37 28-07-2021
Artem_Butenko



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

Цитата:
Возьмите строчку, которую я привел выше, создайте батник с ней одной и запускайте его, подсовывая в качестве параметра разные каталоги.

 
Только так? Т.е., по другому нельзя?

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 22:41 28-07-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
А, вот вы как хотите... Нет, так не выйдет. Это уже не батник, а программа с полноценным UI должна быть.

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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 23:17 28-07-2021
Artem_Butenko



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

Цитата:
А, вот вы как хотите... Нет, так не выйдет. Это уже не батник, а программа с полноценным UI должна быть.

 
Спасибо. Я ведь алгоритм ранее изложил. Теперь понял, что не судьба. Может WSH-ки ребята помогут...

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 23:43 28-07-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

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

Рейтинг.ru