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

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

Модерирует : gyra, Maz

Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

cchameleone



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1) (часть 2) (часть 3) (часть 4)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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 (PDF). Курс лекций для начинающих
· Бокалий В. Командная строка (pdf-брошюрка в 20 страниц)
· Александров А., Дибров А. Урок bat-аники (pdf)
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Скрываем консольные окна, Выполнение BAT-скриптов без вызова окна консоли
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)

Всего записей: 2271 | Зарегистр. 16-10-2015 | Отправлено: 09:22 29-04-2016 | Исправлено: Maz, 08:47 26-03-2020
cl85

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

Цитата:
русские, длинные и с пробелами пути не учтены ...

Всё учтено и работает, это я условно написал, плюс кодировка 866.

Цитата:
добавить "\" в конце имени результата

Не пробовал, но копирует и так без проблем в нужную папку.

Всего записей: 389 | Зарегистр. 26-10-2005 | Отправлено: 12:53 27-07-2020 | Исправлено: cl85, 12:55 27-07-2020
GCRaistlin



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

Цитата:
копирует и так без проблем в нужную папку

Если она существует.

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

Всего записей: 3037 | Зарегистр. 18-04-2005 | Отправлено: 13:00 27-07-2020
cl85

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

Цитата:
Если она существует

Существует, она создаётся другой программой.

Всего записей: 389 | Зарегистр. 26-10-2005 | Отправлено: 13:02 27-07-2020
GCRaistlin



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

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

Всего записей: 3037 | Зарегистр. 18-04-2005 | Отправлено: 13:08 27-07-2020
Fenrizz



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Прошу прощения за оффтопик https://habr.com/ru/post/301924/

Всего записей: 372 | Зарегистр. 12-09-2017 | Отправлено: 14:35 27-07-2020
cl85

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

Цитата:
Вы не понимаете принципа.

Не спорю.
Спасибо, учту.

Всего записей: 389 | Зарегистр. 26-10-2005 | Отправлено: 15:58 27-07-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Написал маленький cmd для перемещения файлов.
 
Задача:
Есть папка, в ней вложенные папки. Располагаться папки может быть где угодно.  
В вложенных папках есть разные файлы, в том числе с расширением .cr2
Нужно переместить из папки только файлы с расширением .cr2 в папку C:/1 с сохранением структуры подпапок. Остальные данные - папки и файлы - в исходной папке должны остаться неизменными.  
 
Решение в виде cmd:

Код:
xcopy *.cr2 C:\1\ /H /Y /C /R /S
del /f /s /q *.cr2 > nul

 
Подскажите, пожалуйста, правильно ли я усё сделал ?
Опасаюсь правильно ли я использовал команду del
Не удалит ли она у меня чего лишнего ?
Ведь расположение папки относительное

Всего записей: 2339 | Зарегистр. 11-12-2002 | Отправлено: 21:55 27-07-2020 | Исправлено: kot1313, 22:13 27-07-2020
Sinclair83

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, всем!
 
На 193-й стр. Mr_SMiT оставлял запрос на поиск последовательности байт в бинарном файле + чтение определённого числа байт от найденного. Запрос оставлен 08-07-2020, а 13-07-2020 уже сделал требуемое, но ожидал повторного появления Mr_SMiT в теме. Ему конечно уже подсказали использовать сторонние инструменты и возможно ему это уже не нужно, но всё же хочу поделиться с общественностью. Может кому пригодится.
Можно передать всего три параметра. Два из них являются обязательными и нуждаются в двойных кавычках (третий же идёт как опция).
 
1й - "полный путь до файла-цели"
 
2й - "сигнатура/паттерн/шаблон" для поиска (допускается использование ??)
 
3й - кол-во байт, которые нужно прочитать после заданного шаблона поиска (если не указывать, то результатом будет только офсет/смещение). Если между найденными паттернами будет меньше байт, чем задано (то есть "внахлёст") или же офсет последнего найденного паттерна + кол-во байт заданного в третьем параметре будет больше размера файла, то лишнее обрежется/прочитается столько байт сколько есть.
 
Да, немного отошёл от задания (в смысле не стал повторять каждый раз искомый паттерн в выводимом результате как это было указано в условии задачи).
 
Надеюсь, что удалось донести общий смысл + извините за стороннее приложение в теме по батникам.
 
 
Вобщем, удачи!
 
 
Ссылка
 
Добавлено:
 
older, нет. Это просто набросок под одну конкретную задачу. Да и настроек-то никаких нет. Только указать объект + что ищем + сколько байт нужно вычитать. Вот и всё.

Всего записей: 743 | Зарегистр. 07-01-2009 | Отправлено: 19:14 28-07-2020 | Исправлено: Sinclair83, 20:48 28-07-2020
older

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

Всего записей: 308 | Зарегистр. 15-02-2003 | Отправлено: 19:28 28-07-2020
Sinclair83

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
older
ответил в пред. сообщении.
 
Пишу это/новое потому что забыл вчера добавить важное замечание: ВНИМАНИЕ! файл читается в память целиком, поэтому будьте осторожны. Это на случай, если надумаете образ игрушки какой-нибудь посмотреть, вес которого будет исчисляться сотнями Мегабайт. Также не обрабатывается условие, когда паттерн состоит из одних только "??". Думаю в трезвом уме никто так делать не будет. Знакми вопроса можно заменить один или несколько байт, которые неизвестны.
 
Программу можно использовать для поиска определённой цепочки байтов (ватермарка, например). Разумеется искать можно в любых файлах. Паттерн должен состоять из шестнадцатиричных чисел/hex (результат будет представлен так же).

Всего записей: 743 | Зарегистр. 07-01-2009 | Отправлено: 10:33 29-07-2020
usalex

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подмогните с батнитком, плиз.
Хочу внести в текстовый файл список файлов и папок, находящихся в целевой папке "core", и чтоб из этой папки core при запуске батника удалились все папки и файлы, внесенные в мой список.
Нашел в сети вот такую конструкцию:

Код:
 
@echo off
set "d=C:\core"
set "f=spisok.txt"
 
for /f "usebackq delims=" %%a in ("%f%") do dir /b/s "%d%"|>nul find "%%a"&& >nul 2>&1 del /q "%%a"& >nul 2>&1 rd /s /q "%%a"
pause
 

но она не работает.

Всего записей: 5195 | Зарегистр. 20-12-2004 | Отправлено: 20:24 01-08-2020 | Исправлено: usalex, 20:28 01-08-2020
insorg



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

Цитата:
set "d=C:\core"
set "f=spisok.txt"  

Кавычки не выглядят здесь нужными....

Всего записей: 1837 | Зарегистр. 04-11-2010 | Отправлено: 20:34 01-08-2020 | Исправлено: insorg, 20:34 01-08-2020
usalex

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
insorg
Без кавычек тоже не работает.
 
Работает вот такая конструкция:

Код:
 
@echo off
set "d=Z:\core"
set "f=Z:\list.txt"
 
for /f "delims=" %%a in ('dir /a-d/b "%d%"^|findstr /g:"%f%"') do del "%d%\%%a"
pause
 

Но она не удаляет папки, внесенные в список, а удаляет только файлы.

Всего записей: 5195 | Зарегистр. 20-12-2004 | Отправлено: 20:41 01-08-2020
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время
usalex
Непонятно.  
del /q "%%a" удалит файл с именем строки из spisok.txt. Но где? Если из текущей папки - то зачем /s у dir?
Я бы зашел с другой стороны

Цитата:
@echo off  
set "d=D:\core"  
set "f=spisok.txt"  
   
for /f "delims=" %%a in ('dir /a /b /s "%d%\*" ^| findstr /e /g:"%f%"') do if exist "%%~a\" (rd /s /q "%%a" > nul 2>&1) else (del /q "%%a" > nul 2>&1)
pause

insorg
Кому как, кому как...
 
PS. Прошу прощения за множественные правки... Тормознул...

Всего записей: 1825 | Зарегистр. 07-08-2002 | Отправлено: 20:52 01-08-2020 | Исправлено: Alex_Piggy, 20:57 01-08-2020
usalex

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Круть! Спасибо, работает.
А нельзя ли улучшить эту конструкцию, чтоб она распознавала в списке строки вида: core\browser\features\formautofill@mozilla.org.xpi и core\browser\VisualElements  ?

Упс... похоже, я лишнего прошу Ваша конструкция прекрасно ищет и удаляет папки и файлы находящиеся внутри папок, вложенных в целевую.
СПАСИБО!

Всего записей: 5195 | Зарегистр. 20-12-2004 | Отправлено: 21:16 01-08-2020 | Исправлено: usalex, 21:49 01-08-2020
Romul81



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую всех. Имеется многопроцессорная машина с 40 потоками в системе.
Задача - запустить скрипт NodeJS в пакетном режиме для файлов, скажем, расширения *.txt.
Одиночная команда в консоли выглядела бы так:

Код:
node myapp.js -parameter myscript.js input.txt input_out.txt

Сделать из неё простой однопоточный батник, обрабатывающий файлы в папке, в принципе не сложно.
Но как сделать, чтоб этот батник нагружал все потоки, имеющиеся в системе?
Чтобы, к примеру, брал первые 40 файлов и начинал их обрабатывать параллельно. По мере высвобождения потоков, они бы переключались на следующие файлы в списке..
Нашел на эту тему пост на stackoverflow .
Продублирую здесь код
 
Судя по всему это то, что мне нужно. Проблема в том, что я практически не знаю синтаксис batch, и не понимаю, что мне нужно изменить. Куда мне вставить свою команду?
Прошу сведущих людей помочь с этим. Либо подсказать с альтернативным вариантом.
Спасибо.

Всего записей: 1292 | Зарегистр. 03-03-2008 | Отправлено: 22:31 13-08-2020
lexapass



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Romul81
В первом приближении достаточно заменить строку

Код:
ping localhost -n %seconds% > NUL
 

В %request% чуть выше будет имя "текущего" файла .txt и дополнительно придется подготовить имя "выходного"  файла.
В итоге вместо <ping...> нужно вставить что-то типа этого:

Код:
...
for /f "delims=" %%o in ("%request%") do set "request_out=%%~no_out%%~xo"
node myapp.js -parameter myscript.js "%request%" "%request_out%"
...

Всего записей: 540 | Зарегистр. 11-10-2004 | Отправлено: 00:21 14-08-2020
Romul81



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

Всего записей: 1292 | Зарегистр. 03-03-2008 | Отправлено: 01:01 14-08-2020
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, Romul81
Смотрите в сторону rush (x32 x64)  или ppx2 (x32) Это будет намного проще...
Батником составляете список по типу, затем скармливаете кому-то

Код:
echo off > commands.list
for %%i in (*.txt) do echo node myapp.js -parameter myscript.js "%%~i" "%%~ni_out%%~xi" >>commands.list
type commands.list | ppx2 -L 1 -P 40 -I {} {}
type commands.list | rush -j 40 {}

ppx2 не запустит x64 приложение. Разве что Вам его кто-то пересоберет...
Теоретически можно и без commands.list (синтаксис на страничках) - но я предпочитаю проверять, что будет запускаться...

Всего записей: 1825 | Зарегистр. 07-08-2002 | Отправлено: 07:51 14-08-2020
lexapass



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Romul81
Я не знаток node. Очевидно, что проблема в выполнении"node myapp.js -parameter myscript.js ...".
На кошках с блокнотом (notepad "%request%") схема работает и все открывается.
 
 

Всего записей: 540 | Зарегистр. 11-10-2004 | Отправлено: 08:26 14-08-2020
   

Страницы: 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru