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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
serg3001
отбор файлов происходит тут
Код:
$files = Get-ChildItem -File -Path $source | Get-Picture | Where-Object -Property Resolution -GE $resolution | Where-Object -Property Orientation -EQ "Landscape"
с помощью Where-Object. Первый разрешение картинки больше или равно указанному в параметре $resolution. Второй Where-Object отбирает ориентацию равную "Landscape".
Конечную папку - правильно, там.
Цитата:
в конечной папке проводится проверка на дублирование файлов? Например, два файла с разными именами, но одинаковые по изображению, будет скопирован один или оба?
Проверка есть. по хэшу. Если уже есть в конечной папке или в кеше хэша (т.е. ранее копировалось), то копироваться не будет. Даже если файл уже удалён (убедился же уже. когда удалял файлы, а кэш не почистил). Это фича такая. Я использую эту папку в качестве обоев слайд-шоу на рабочем столе. И иногда картинки мне не нравятся, я их удаляю и дабы они вновь не копировались, их хэш сохранён в кэше. ну и так быстрее хэши не надо каждый раз вычеслять а картинок у меня уже 246 и эт занимает время.
 

Всего записей: 2973 | Зарегистр. 16-08-2012 | Отправлено: 15:11 14-08-2018 | Исправлено: iNNOKENTIY21, 15:17 14-08-2018
sundraw

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RetroRocket
В продолжение темы редактирования RDP-файлов решение по редактированию в цикле нашёл:

Код:
 
@echo off  
SetLocal EnableExtensions EnableDelayedExpansion  
 
::исходные данные
Set infile=O:\RDP\%%i.rdp
Set outFile=O:\RDP\RDP1\%%i.rdp
Set find=192.168.1.2
Set replace=192.168.56.1
 
for /L %%i in (1,1,50) do (
@echo %%i
 
::из исходного RDP-файла в UTF-кодировке формируем временный файл в ANSI-кодировке  
type "%infile%" > "%infile%.tmprdp"
 
::поиск и замена
for /F "UseBackQ delims=" %%n in ("%infile%.tmprdp") do (
set "LINE=%%n"
echo=!LINE:%find%=%replace%!>>"%outFile%.tmprdp"
)
 
::копируем содержимое из временного файла в ANSI-кодировке в итоговый RDP-файл в UTF-кодировке
cmd /u /c type "%outFile%.tmprdp" >>"%outFile%"
 
::удаляем временные файлы
del O:\RDP\*.tmprdp /q  
del O:\RDP\RDP1\*.tmprdp /q  
 
)
 

Убрав из скрипта проверку, цикл заработал, как надо. Спасибо за помощь

Всего записей: 735 | Зарегистр. 15-05-2011 | Отправлено: 19:00 16-08-2018
serg3001



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

Код:
schtasks.exe /create /tn "Copy Images" /xml "C:\Users\Имя\Documents\1.xml"

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

Всего записей: 3662 | Зарегистр. 16-10-2010 | Отправлено: 10:19 28-08-2018
insorg



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

Код:
@set ZipPath=%COMMANDER_PATH%\Plugins\wcx\Total7zip\7z-%PROCESSOR_ARCHITECTURE%
@echo 1
@echo %ZipPath%
 
@set 7ZipPath=%COMMANDER_PATH%\Plugins\wcx\Total7zip\7z-%PROCESSOR_ARCHITECTURE%
@echo 2
@echo %7ZipPath%
 
@pause

выдаётся

Код:
1
C:\Portable\TC\Plugins\wcx\Total7zip\7z-AMD64
2
ZipPath
Для продолжения нажмите любую клавишу . . .

 
Получается, что в названии переменной cmd не способна обработать цифру? Как это лечится? Как обойти, если очень нужно?

Всего записей: 1837 | Зарегистр. 04-11-2010 | Отправлено: 22:27 02-09-2018 | Исправлено: insorg, 22:28 02-09-2018
Jonmey

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

Цитата:
@echo %7ZipPath%

Красное интерпретируется, как отдельная переменная, значение которой не определено в вашем батнике. Поэтому выводится только текст после этой переменной (зеленый). Последний знак (%) интерпретируется как неверно употребленный оператор и игнорируется.

Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 23:17 02-09-2018
insorg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey
а как я тогда могу использовать переменную, которая с цифры начинается?

Всего записей: 1837 | Зарегистр. 04-11-2010 | Отправлено: 14:44 03-09-2018
BorlandIMHO

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

Цитата:
а как я тогда могу использовать переменную, которая с цифры начинается?

Единственный вариант, который мне видится:
Код:
set "7ZipPath=C:\Program Files\7-Zip\7z.exe"
echo %7ZipPath%
setlocal ENABLEDELAYEDEXPANSION
echo !7ZipPath!
setlocal DISABLEDELAYEDEXPANSION
pause

При этом, конечно, "всплывают подводные камни" ENABLEDELAYEDEXPANSION...

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

Всего записей: 1165 | Зарегистр. 12-10-2006 | Отправлено: 15:41 03-09-2018
Inoz2000



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

----------
Мы все умрём. (-:

Всего записей: 3333 | Зарегистр. 23-04-2009 | Отправлено: 15:57 03-09-2018
insorg



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

Всего записей: 1837 | Зарегистр. 04-11-2010 | Отправлено: 16:59 03-09-2018
526549



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Есть один очень крохотный тестер скорости лан сети  
https://web.ars.de/netio/ (http://web.ars.de/wp-content/uploads/2017/04/netio132.zip)
В архиве есть бинарник для Windows (netio132.zip\bin\win32-i386.exe)
Пишу скрипт для теста сети, но хочу сделать его самодостаточным. пару раз в жизни видел, как приложение или иной бинарник вставляют в скрипт и он временно "распаковывается" командой echo
Есть ли умельцы или какой то программный инструмент, который сможет небольшое приложение (19 кб) всунуть в bat файл с последующей "распаковкой" ?

Всего записей: 355 | Зарегистр. 20-01-2007 | Отправлено: 20:15 03-09-2018 | Исправлено: 526549, 20:43 03-09-2018
Smitis



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

Цитата:
какой то программный инструмент, который сможет небольшое приложение (19 кб) всунуть в bat файл с последующей "распаковкой"

Из батника можно было таким образом получить только com-файлы. На x64 работать не будут.
http://forum.ru-board.com/topic.cgi?forum=5&topic=33080&start=1740
 
Если воспользоваться чем-то другим, например PowerShell, можно закодировать exe файл в строку, например, base64, и вставить в скрипт. Потом раскодировать на диск.

Всего записей: 2354 | Зарегистр. 09-02-2003 | Отправлено: 23:10 03-09-2018 | Исправлено: Smitis, 23:34 03-09-2018
RetroRocket



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

Цитата:
какой то программный инструмент, который сможет небольшое приложение (19 кб) всунуть в bat файл с последующей "распаковкой" ?

Есть утилита exe2bat (http://wincmd.ru/plugring/Exe2Bat.html).
Она создаёт некий гибрид cab-файла с bat-командами. Возможности сильно ограничены - не более 250 байт на все bat-команды.
Из описания -

Цитата:
"Утилита преобразует исполняемый (exe) файл в файл командного процессора (bat), сжимая его внутренним упаковщиком Windows...  
... при упаковке внутренним упаковщиком Windows, в начале файла прописываются символы MSCF, потом идут служебные данные, а потом свободное место, примерно 250 байт, в которое можно записать свои комманды. Коммандный процессор ... пропускает весь "мусор" (MSCF и т.д.), находит первую знакомую комманду и начинает выполнять её."



----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 2554 | Зарегистр. 02-01-2018 | Отправлено: 18:08 07-09-2018
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Плохо  с языком и особенностями Bat-файлов знаком, может кто подскажет как мелочевку сделать?  
Есть куча папок с рандомными названиями, в каждой папке лежит папка ggg и куча ещё всякого мусора.  
Нужно пройтись по всем папкам, вытащить из ggg все файлы и поместить их в корень этих папок, а все остальное, включая ggg - удалить.  
 
Как по простому такое сделать? На PHP бы я быстро бы это написал, но это неудобно, а с батниками слабо знаком.

Всего записей: 1415 | Зарегистр. 08-10-2011 | Отправлено: 15:42 09-09-2018 | Исправлено: xerpal, 13:58 13-09-2018
Rako1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня такая задача. Если не по адресу, просьба указать, в какой теме это лучше спросить.
 
Подскажите пожалуйста как сделать, чтобы из группы текстовых файлов, разложенных по папкам, выделять отдельные блоки текста, если в этом блоке текста скажем первая строка определённая. И помещать эти блоки текста, разделённые тремя пустыми строками в новый текстовый файл, один за другим. Т.е. должна получиться выборка блоков текста с определённой первой строкой.  
 
Конкретно:
 
Имеем 1000 текстовых файлов. Общим размером около 5мб. Некоторые файлы по 250кб, но таких мало, меньшинство, всего штук 5-10. Самый распространённый размер файла думаю около 20кб. Каждый файл построен следующим образом. В каждом файле идут блоки текста по одной или по несколько строк. Если строк в блоке несколько, то они могут быть либо не разделены пустыми строками, либо разделены одной пустой строкой, либо разделены двумя пустыми строками. Если разделены тремя и больше пустыми строками, то это уже граница блока, т.е. блок закончился и дальше идёт следующий блок.
 
Что за текст? Это заметки. Т.е. это не спецсимволы и прочее, не ini-файл, а просто обычный текст, предложения на русском языке. Кодировка во многих файлах разная, в некоторых ANSI, в некоторых URF-8, в некоторых ещё хрен знает что, причём параметры, которые показывает Notepad++ в статусной строке рядом с кодировкой, а именно порядок байт или строк или как там, не помню, короче CLRF или что-то такое, вот это параметр тоже у многих файлов разный. Если нужно привести все файлы к одной кодировке и одному этому CRLF или как там, а может и к одному ещё чему-то, то придётся сделать, сделаю, хотя от совета как это сделать тоже не откажусь.
 
Что за первая строка в блоке, по которой нужно искать блоки и выписывать в отдельный текстовый файл. Это повторяющаяся строка, т.е. во многих блоках она одна и та же. А точнее даже не вся первая строка там повторяется, а только её часть, выглядящая так:
#СловоИлиФраза
Вся же первая строка может выглядеть так:
#СловоИлиФраза
А может и так:
#СловоИлиФраза #ДругоеСловоИлиДругаяФраза #СловоИлиДругаяФраза
Вот по этой части первой строки и нужно искать блоки и выписывать их в отдельный файл. В итоге если ищем #СловоИлиФраза, то будет новый файл, в котором будут все блоки текста со всех файлов, в первой строке которых присутствует #СловоИлиФраза.
 
 
 

Всего записей: 795 | Зарегистр. 17-12-2007 | Отправлено: 02:52 12-09-2018
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Rako1
Powergrep (см. соответствующмй топик), режим Collect data.

Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 08:42 12-09-2018
Rako1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey
О! Давно лежала такая программа, правда не инсталлировал ни разу, не думал, что она выполняет такие функции. Спасибо за наводку. Программа справилась с моей задачей.
 
Добавлено:
xerpal
Не знаю как сделать с пом. батников, я тут вообще не специалист, но в TCIMG я видел что-то подобное.

Всего записей: 795 | Зарегистр. 17-12-2007 | Отправлено: 17:05 12-09-2018
metatrop

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

Цитата:
 
Есть куча папок с рандомными названиями, в каждой папке лежит папка ggg и куча ещё всякого мусора.  
Нужно пройтись по всем папкам, вытащить из ggg все файлы и поместить их в корень этих папок, а все остальное, включая ggg - удалить.  
 
Как по простому такое сделать?
 

Используя FAR Manager можно элементарно найти все папки ggg, список найденных на временную панель, затем CtrlG (применить команду к каждому элементу списка) с вводом чего-то вроде
cd "!\!.!" & copy *.* ..
 
Потом можно снова поиск всех ggg и удалить их разом.

Всего записей: 260 | Зарегистр. 17-09-2010 | Отправлено: 19:22 12-09-2018
wadimuss

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
metatrop
оффтопим?
и зачем копировать и набирать кучу символов?
- встали всеми панелями на корень папки. в одной панели Alt-F7, ищем всё.
- после окончания поиска перешли на панель поиска
- в этой панели Alt-2 (чтобы не видеть длинные пути), пометили нужные папки ggg и переместили на другую панель (F6), при совпадении имен поступайте как надо
- далее в панели поиска остатки файлов и папок пометить и удалить
получим в корне одну папку ggg и в ней все файлы. заходим в неё, помечаем всё, F6 и в строке куда: ..
 
ЗЫ.
bat-ничек ложим в корень

Код:
CD /d "%~dp0"
for /r %%i in ("ggg") do move /y "%%i\*.*" "%~dp0"
for /d %%i in (*) do rd "%%i" /q /s

 
первая команда для корня нашего bat-файла
вторая команда перемещает все файлы только из каталогов ggg в корень (ищет по всем папкам)
третья команда убирает все папки

Всего записей: 889 | Зарегистр. 24-11-2008 | Отправлено: 19:57 12-09-2018 | Исправлено: wadimuss, 21:01 12-09-2018
virussnu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Камрады!
В своём "Тотал коммандере" активно (прям жить без неё не могу!) использую кнопку следующего вида:

Цитата:
TOTALCMD#BAR#DATA
cmd /v:on /c
"for %%i in (%S) do set mdd=%%~ti && md ^"%T"!mdd:~6,4!-!mdd:~3,2!-!mdd:~0,2!^""
WCMICONS.DLL,29
Создать каталоги по дате отмеченных файлов/каталогов
 
 
-1
 
 

Работает так:
Выделяю любое количество файлов/папок (без разницы) в одной панели, жму на кнопарь - в целевой панели (противоположной) появляются папки вида "ГГГГ-ММ-ДД", соответствующие датам выделенного.
Всё замечательно работает за одним НО...  
 
Не создаёт папки внутри каталогов с, например, китайскими символами или содержащими в имени знак "&" (может и ещё какими - не помню, на вскидку могу сказать только это).
 
1. КАК ПОПРАВИТЬ команду, чтоб ей было "фиолетово" до символов/кодировок/языков?
2. КАК ПОПРАВИТЬ команду, чтоб получить папку вида "ГГГГ-ММ-ДД_чч-мм" и ей было "фиолетово" до символов/кодировок/языков?
 
Буду крайне вам признателен.
 
З.Ы.  
Как она (кнопка) вообще работает я совершенно не врубаюсь (взял "с просторов интернета"). Её код для меня - "китайская грамота"... Пытался как-то разобраться, но ваааще запутался и "задвинул это дело". Помогите, плиз.

Всего записей: 347 | Зарегистр. 15-09-2007 | Отправлено: 21:38 12-09-2018 | Исправлено: virussnu, 17:43 14-09-2018
metatrop

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wadimuss
Вы делаете совсем не то же самое, и в своей самонадеянности даже не замечаете этого. Обратите внимание на фразы "вытащить из ggg все файлы" (про папки речь не идёт) и "поместить их в корень этих папок" (слово "этих" можно понять по-разному).

Всего записей: 260 | Зарегистр. 17-09-2010 | Отправлено: 21:44 12-09-2018
   

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