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

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

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
se4a
Ну разумеется.
Чтобы избежать проблем, связанных параллельным выполнением однотипных команд, можно соединять команды через операторы &, && или || в зависимости от задачи
команда1 (&, && или ||) команда2

Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 17:56 07-03-2020
se4a



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey, Вы не поняли, мне нужно два отдельных файла для команд, я в программировании ноль! Чтобы "жмакнул" один файл - экспортировал из реестра, "жмакнул" другой - импортировал! Всё! Заранее спасибо!

Всего записей: 229 | Зарегистр. 10-01-2012 | Отправлено: 19:18 07-03-2020
Sinclair83

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ipmanyak
Решили? Нет? Задачу бэкапа и хранения версий файлов. Если да, то как? с помощью 7-zip (как советовал NIKZZZZ выше)?

Всего записей: 744 | Зарегистр. 07-01-2009 | Отправлено: 19:23 07-03-2020
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
se4a
Я же вам выше давал ссылку на программу, которая превращает .reg файл в .bat, на который достаточно двакликнуть и готово:

Цитата:
https://www.sordum.org/8478/reg-converter-v1-2/  
(для особо озабоченных имеется отчет VirusTotal)
 

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

Цитата:
я в программировании ноль!

Вам нужно понять одну простую, первоочередную и архиважную вещь:
командная строка, батники, reg файлы  - инструменты предназначенные для подготовленных и очень подготовленных пользователей. Они не рассчитаны на тех, кто "может только нажимать", потому что в неопытных руках это крайне опасные инструменты, способные двумя кликами похоронить не только систему, но и всю информацию на компе. Эти инструменты, в отличие от штатных средств пользовательского интерфейса Windows, не задают лишних вопросов, часто не требуют подтверждений для выполнения, не предупреждают о последствиях и т.д. То есть даже априори разрушительные действия с помощью этих инструментов могут быть осуществлены простым даблкликом. При этом, как в MS Word, в этих инструментах не нажмешь кнопочку - Шаг назад. Более того, многие роковые операции (вызванные ошибками юзера), часто никак себя не проявят до перезагрузки Windows, когда часто поздно пытаться исправлять.
 
Поэтому, вам нужно, либо отказываться от использования этих инструментов, либо осваивать их, хотя бы, на базовом уровне. Третьего - не дано.
 
Поэтому, чтобы начать этот процесс, начните, в изучения командной строки (запись, применение, использование) и команды REG  (первичная справка по команде в консольном окне REG /?) и ее операторов, в частности, EXPORT и IMPORT (первичные справки в консоли соответственно
REG EXPORT /?
REG IMPORT /?
 
Причем, практическими экспериментами занимайтесь исключительно с командой
REG EXPORT ... ...
Освоив использование командной строки в консоли, переходите к батникам (то есть, фактически, перенесением того, что вы пишите в ком. строке в файлы .bat
 
Более подробные справки по батникам и командам - в интернете, в частности, на упомянутом выше сайте.
 
Если вам это не по силам - просто забейте и забудьте о реестре, батниках и командах.

Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 22:45 07-03-2020 | Исправлено: Jonmey, 23:41 07-03-2020
se4a



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey, спасибо!
Вы как-будто меня отчитываете.
Мне нужно-то было лишь экспортировать "остаток дней автообновления" с материного ноута на мой.
Сегодня приходил друг с руками и более-менее знает комп..
Он по моей инструкции экспортировал один "снимок", включил-отключил и перевёл дату паузы, сделал другой "снимок", прислал мне.
Завтра буду разбираться, почему у меня "тает" количество пауз, а на материном - нет. Может быть, получится исправить.

Всего записей: 229 | Зарегистр. 10-01-2012 | Отправлено: 19:36 08-03-2020
Jonmey

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

Цитата:
Вы как-будто меня отчитываете.

Потому что вам уже вторую страницу объясняют (то есть, до меня), элементарные вещи, а вы на все это заявляете:
Цитата:
я в программировании ноль!

Запишите ваши строчки в .bat (или .cmd) файлы и вопрос закрыт.
У вас Блокнота нет? Или в чем проблема?
Из ваших сумбурных  объяснений невозможно понять, какова общая задача и зачем вы все это делаете? Поэтому невозможно понять и в чем у вас проблемы, поскольку внешне вы плутаете в трех соснах, двигаясь по треугольной траектории.
Из общих же соображений если глядеть на ваш экспорт-импорт ветки
HKLM\SOFTWARE\Microsoft\Windows
вы занимаетесь, как бы это помягче сказать...  не вполне осмысленным действом. Уже ввиду того, что не все ключи в указанной ветке доступны для редактирования юзеру с правами от Администратора и ниже.
То есть, очевидно, что вы не совсем знакомы со многими базовыми вещами реестра и самой ОС.
Отсюда весь смысл вашей затеи стремится к нулю к тенденции к отрицательным значениям (то есть, вредоносности для вашей системы).
Если вам нужны снимки реестра или его части разумнее использовать специализированные программы (SysTracer, Regshot и проч.) или программы имеющие таковые функции (типа RegOrganizer и т.д.). Это позволит вам воочию наблюдать произошедшие изменения в реестре и контролировать процесс отката или изменения.

Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 21:43 08-03-2020
MorzeCBP

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер!
Уважаемые коллеги, помогите создать батник.
Имеем: планшет под управлением Windows. Подключаемся с его помощью к точке Wi-Fi.
Необходим запрос, после которого в окне командной строке отображалась бы следующая информация:
- название ТОЛЬКО сетевой карточки Wi-Fi планшета и ее MAC-адрес.Что-то наподобие команд ipconfig, или getmac. Может присутствовать и другая информация по карте (IP-адрес, шлюз, и т.д.). Название и МАС - обязательны. И очень желательно!!, чтобы выводилась информация только по карточке Wi-Fi, а не всех карточек и сетей, имеющихся в планшете.
- следующее, должен выводиться SSID и MAC адрес точки, с которой планшет сконектился.
 
Возможен такой запрос?
Спасибо!

Всего записей: 86 | Зарегистр. 26-11-2007 | Отправлено: 23:28 10-03-2020
andrejka_k

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
Есть необходимость пакетной обработки всех jpg-файлов, находящихся в произвольной папке (допустим, путь к папке будет С:\Folder), с добавлением к каждому jpg-файлу текста, меняющегося по определенному шаблону (например, ID123XXXXX, т.е. ID12300001 - ID12399999).
Мне подсказали, что добавить текст к произвольному jpg-файлу можно с помощью magick из командной строки по следующей команде:
 
magick.exe convert -gravity SouthWest -font Arial -pointsize 50 -fill Red -draw "text 0,0 'ID123XXXXX'" in.jpg out.jpg
 
где in.jpg - имя оригинального файла,
out.jpg - имя обработанного файла с добавленным текстом.
 
Помогите, пожалуйста, с батником, который будет повторять эту же самую команду для всех файлов из папки, но с условием:
в первый jpg-файл командой выше добавляется текст ID12300001, а сам файл получает точно такое же имя, т.е. ID12300001.jpg;
далее обрабатывается второй по счету файл, к которому добавляется текст ID12300002, а сам файл получает точно такое же имя, т.е. ID12300002.jpg;
и так до тех пор, пока не обработаются все файлы.
 
По логике, нужно написать цикл, чтобы последовательно обрабатывались все файлы в папке (см. in.jpg), каждый из которых будет переименован в ID12300001.jpg (это первый по счету out.jpg) и так до конца - ID123***** (это последний по счету out.jpg)
 
Заранее большое спасибо.
 
Добавлено
Благодаря помощи уважаемого Alex_Piggy решение было найдено.
Нужно перетащить папку с обрабатываемыми файлами на батник (код ниже). Батник должен находиться в одной папке с convert.exe из портабельного Imagemagick.

Код:
 
@echo off > log.txt
set "PATH=%~dp0;%PATH%"
cd /d "%~1"
setlocal enabledelayedexpansion
set "count=0"
 
if not exist "Result\" mkdir "Result"
for %%i in (*.jpg) do (
set /a "count=count+1"
set "fname=000000000!count!"
set "fname=id123!fname:~-5!"
convert -gravity SouthWest -font Arial -pointsize 50 -fill Red -draw "text 0,0 '!fname!'" "%%~i" "result\!fname!.jpg
echo %%i saved as !fname! >> log.txt
echo %%i saved as !fname!
)
start log.txt
 

 
set /a "count=count+1" - увеличение на 1 порядкового номера
set "fname=000000000!count!" - добавляються ведущие нули
set "fname=id123!fname:~-5!" - из переменной fname вырезаються последние 5 символов и перед ними ставиться "id123"
Если нужна предварительная сортировка, то вместо "for %%i in (*.jpg) do (" читать вывод dir строкой типа
for /f "delims=" %%i in ('dir /b /a-d /od *.jpg') do (
 
"/b" - выводить только имена, "/a-d" - только файлов, "/od" - сортировать по дате от старших к младшим.

Всего записей: 1029 | Зарегистр. 13-05-2003 | Отправлено: 23:30 10-03-2020 | Исправлено: andrejka_k, 14:50 11-03-2020
NIKZZZZ



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

Цитата:
Возможен такой запрос?  


Код:
Netsh.exe wlan show all|findstr /i "Описание: SSID: Состояние: Физический адрес: BSSID:"


Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:49 11-03-2020
MorzeCBP

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

Цитата:
Код:
Netsh.exe wlan show all|findstr /i "Описание: SSID: Состояние: Физический адрес: BSSID:"
 

Отлично! То что нужно! Спасибо большое!
Но хочется еще большего счастья , а именно: очистить выводимую информацию от "лишнего".
Оставить только строки с SSID и BSSID, а все что ниже - удалить:

 
Т.е. удалить начиная со строки: "Имя идентификатора......" и всё, что ниже.
 
Заранее благодарю!

Всего записей: 86 | Зарегистр. 26-11-2007 | Отправлено: 21:44 12-03-2020 | Исправлено: MorzeCBP, 21:52 12-03-2020
NIKZZZZ



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

Код:
Netsh.exe wlan show all|findstr /i /r  /c:"^ *BSSID *:" /c:"^ *SSID *:"

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 22:33 12-03-2020
generator324

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть .bat-файл обновления 2GIS, вида:
Код:
wget -c -nc -np -r -l 1 -H -D download.2gis.com -P "C:\2GIS" -e "robots=off" -A "2GISData_Tambov-*.orig.zip" -nd "http://info.2gis.ru/tambov/products/download"

результатом работы которого является появление в каталоге "C:\2GIS" файлов вида:
2GISData_Tambov-84.orig.zip  
2GISData_Tambov-85.orig.zip
2GISData_Tambov-86.orig.zip
Хотелось бы, что по завершению работы WGet происходило удаление "предыдущего" файла, т.е. оставался последний выкаченный. На него WGet ориентируется при принятии решения: качать файл с сервера (если нету), или не качать - если есть.
Ещё бы хотелось, по возможности, реализвать всё это на wsh (.vbs), как в оригинале, но это не обязательно - попробую, если что допилить сам...

Всего записей: 985 | Зарегистр. 11-01-2019 | Отправлено: 06:31 13-03-2020
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
generator324
Сама команда получения ужасна своей рекурсивностью, поэтому я добавил grep:
Цитата:
@echo off
 
wget -O- "http://info.2gis.ru/tambov/products/download"|grep -iEo -m1 "http://[^""""]*2GISData_[^""""]*\.orig\.zip"|wget -i- -N
for /f "tokens=* skip=1" %%a in ('dir /b /o:-d 2GISData*.zip') do del /f /q %%a

Всего записей: 10071 | Зарегистр. 11-03-2002 | Отправлено: 06:58 13-03-2020
generator324

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

Цитата:
Сама команда получения ужасна своей рекурсивностью, поэтому я добавил grep:

Благодарю!
А где взять grep? У меня на Windows 7 его нет, получил это:

Цитата:
"grep" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

 
Добавлено:
Честно говоря, может так и правильнее, но... я в этой конструкции просто потерялся: мне нужен .vbs, как здесь, поскольку приведённый мной фрагмент только часть кода, а теперь... я даже не знаю, как к нему подступиться
 
Добавлено:
Фигня какая-то, этот ваш grep, или у вас там ошибка:

Код:
C:\get_2gis_tambov-grep.cmd
No URLs found in -.
--2020-03-13 07:42:19--  http://info.2gis.ru/tambov/products/download
Resolving info.2gis.ru (info.2gis.ru)... 91.236.51.53
Connecting to info.2gis.ru (info.2gis.ru)|91.236.51.53|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 116481 (114K) [text/html]
Saving to: 'STDOUT'    
-  0% [                                     ]       0  --.-KB/s    in 0s
 
Cannot write to '-' (Bad file descriptor).

Конструкция, приведённая мною выше, вполне работоспособна, зачем так усложнять-то?  

Всего записей: 985 | Зарегистр. 11-01-2019 | Отправлено: 07:33 13-03-2020
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
generator324
Затем, что рекурсивный обход - это долго. И все работает.
Цитата:
Cannot write to '-' (Bad file descriptor).
А это выдает, если файл уже есть и он не старее того, который на сервере. Т.е. ничего делать и не надо.

Всего записей: 10071 | Зарегистр. 11-03-2002 | Отправлено: 08:34 13-03-2020
generator324

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

Цитата:
А это выдает, если файл уже есть и он не старее того, который на сервере.  

А по каким критериям он определяет это "не старее"? Ведёт оно себя весьма странно:
1. Я переименовал уже имеющийся файл, выкаченный моим .bat-файлом в предыдущий (2GISData_Tambov-85.orig.zip) - ваш батник по-новой качать не стал.
2. ОК, создал файл-пустышку нулевого размера - ваш батник снова качать не стал.
3. Просто удалил его (2GISData_Tambov-86.orig.zip) ВООБЩЕ - ваш батник опять качать не стал!
И вы говорите, оно РАБОТАЕТ?!
Давайте оставим, наконец WGet в покое, в его собственном топике, и ответим на
исходный вопрос, а именно:

Цитата:
Как сделать так, чтобы просто при появлении в каталоге "C:\2GIS" нового файла,  происходило удаление "предыдущего" файла, т.е. оставался последний выкаченный.

Всего записей: 985 | Зарегистр. 11-01-2019 | Отправлено: 08:52 13-03-2020
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
generator324
А вторая, мля, строчка.... для красоты?

Всего записей: 10071 | Зарегистр. 11-03-2002 | Отправлено: 09:04 13-03-2020
generator324

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

Цитата:
А вторая, мля, строчка.... для красоты?

Прежде чем доходить до 2-й строчки, давайте с 1-й разберёмся (с).
Не работает она, ваша строчка - я уже писал выше. Ещё крупнее написать, чтобы вы увидели:
НЕ РАБОТАЕТ !!!
 
 
Добавлено:
И даже лог приводил, который вы проигнорировали.

Всего записей: 985 | Зарегистр. 11-01-2019 | Отправлено: 09:12 13-03-2020
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
generator324
У вас какая каша в голове? С маянезом чтоле? Вы просили
Цитата:
Как сделать так, чтобы просто при появлении в каталоге
Это делает вторая строчка. Она, отдельно от первой.

Всего записей: 10071 | Зарегистр. 11-03-2002 | Отправлено: 09:31 13-03-2020
generator324

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

Цитата:
У вас какая каша в голове? С маянезом чтоле? Вы просили

Не уходите в сторону, признайте - вот ЭТО:

Код:
wget -O- "http://info.2gis.ru/tambov/products/download"|grep -iEo -m1 "http://[^""""]*2GISData_[^""""]*\.orig\.zip"|wget -i- -N

НЕ РАБОТАЕТ !!!
Потом будем говорить уже дальше. Хотя... Вот ЭТО:

Код:
for /f "tokens=* skip=1" %%a in ('dir /b /o:-d 2GISData*.zip') do del /f /q %%a  

тоже не работает - оно пытается удалить в текущем каталоге, а надо вот здесь, т.е. в C:\2GIS.
Я пользуюсь своей строкой (выше) для выкачивания 2GISData*.zip, ведь ваша, "не ужасная своей рекурсивностью", НЕ РАБОТАЕТ!
 
Если хотя бы подскажете, где поправить здесь:

Код:
for /f "tokens=* skip=1" %%a in ('dir /b /o:-d C:\2GIS\2GISData*.zip') do del /f /q %%a  

будет хорошо.

Всего записей: 985 | Зарегистр. 11-01-2019 | Отправлено: 09:50 13-03-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