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

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



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

Всего записей: 10071 | Зарегистр. 11-03-2002 | Отправлено: 16:40 07-01-2020
NIKZZZZ



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

Цитата:
 find - это не внутренняя команда, и если find.exe по какой-либо причине недоступен, ваш тоже работать не будет.

Команда find.exe входит в комплект поставки всех версий windows, c таким же успехом можно утверждать, что если cmd.exe по какой-либо причине недоступен, ваш тоже работать не будет.

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:42 07-01-2020
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Без cmd и батник не запустится. Ваш вариант добавляет еще одну зависимость ("нужен find.exe"). А "некорректный" код выше - две ("нужен find.exe" и "не запускайте это на 6.2.9100").

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

Всего записей: 3075 | Зарегистр. 18-04-2005 | Отправлено: 17:18 07-01-2020
NIKZZZZ



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

Цитата:
еще одну зависимость

Тут есть еще одно "зависимость", сложные конструкции типа For , преобразование переменных через set могут выполняться немного по разному в зависимости от версии системы, так, что чем проще скрипт, тем менее он зависит от системы.
А вот если система испорчена (например, отсутствуют какие-либо файлы идущие в комплекте поставки), то ей и нет смысла пользоваться, определение версии не самоцель, а всего-лишь часть общей задачи.

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 17:38 07-01-2020
GCRaistlin



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

Цитата:
сложные конструкции типа For , преобразование переменных через set могут выполняться немного по разному в зависимости от версии системы, так, что чем проще скрипт, тем менее он зависит от системы

Бездоказательное Безосновательное утверждение и, как следствие, неверный вывод.
 

Цитата:
вот если система испорчена

Она вовсе не обязательно "испорчена". Например, если в командной строке среды восстановления Windows изменить GUID текущего раздела, то просмотр PATH для поиска программ отрубается. И именно в такой среде нужно выполнить батник, чтобы привести систему в чувство.

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

Всего записей: 3075 | Зарегистр. 18-04-2005 | Отправлено: 18:11 07-01-2020 | Исправлено: GCRaistlin, 18:31 07-01-2020
Galiley

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

Всего записей: 95 | Зарегистр. 02-01-2020 | Отправлено: 19:44 07-01-2020
GCRaistlin



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

Код:
 
@echo off
if not defined LaunchingItself (
  set LaunchingItself=1
  call "%0" %*
  goto eof
)
...
 

Или передавать параметр в строке повторного запуска. Или и то, и другое. Но 100 %-ной гарантии все равно не будет.

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

Всего записей: 3075 | Зарегистр. 18-04-2005 | Отправлено: 20:02 07-01-2020
Galiley

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго всем. Символы табуляции и пробела возможно задать как-то явно в качестве разделителя в цикле?

Код:
for /f "delims=#     " %%T in ("%%I") do set "Name=%%T"

Здесь стояли табуляция и пробел. После вставки на форум остались только пробелы.

Всего записей: 95 | Зарегистр. 02-01-2020 | Отправлено: 07:48 09-01-2020 | Исправлено: Galiley, 07:51 09-01-2020
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Galiley
Цитата:
for /f tokens^=1^,2^,3^<space>delims^=^<tab>^<space><space>%%a in .........
<tab> и <space> заменить на настоящие. Где они указаны - обязательно соблюсти кол-во

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли средствами bat\cmd выполнить следущую задачу:
 
1. Найти все файлы с расширением exe в папке (обязательно включая вложенные)
2. Применить ко всем найденным файлам exe атрибут  
"Выполнять эту программу от имени администратора"
 
Заранее спасибо за подсказки

Всего записей: 2375 | Зарегистр. 11-12-2002 | Отправлено: 18:44 10-01-2020
iglezz

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

Код:
@echo off
pushd %~dp0
for /f "tokens=*" %%a in ('dir /s /b *.exe') do (
    reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%%a" /t REG_SZ /d "~ RUNASADMIN" /f
)
 

Всего записей: 1395 | Зарегистр. 18-02-2003 | Отправлено: 19:45 10-01-2020 | Исправлено: iglezz, 21:52 10-01-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iglezz
Попробовал использовать cmd в папке C:\Program Files\Моя папка
К сожалению галочки "Выполнять эту программу от имени администратора" у экзешников не проставились.
Хотя в окне cmd было написано 22 раза "Операция успешно завершена" - по числу exe в папке и подпапках.
 
Добавлено:
ЗЫ Заметил в ветке HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
тысячи ненужных мне строчек содержащиие какие-то упоминания про winSxS, SysWOW64 и System32
Сотру ка  я эту ветку, может батник будет работать  

Всего записей: 2375 | Зарегистр. 11-12-2002 | Отправлено: 21:45 10-01-2020 | Исправлено: kot1313, 22:07 10-01-2020
iglezz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
Эх, пробелы... "tokens=*" потерял я в батнике, обновил пост выше.

Всего записей: 1395 | Зарегистр. 18-02-2003 | Отправлено: 21:52 10-01-2020 | Исправлено: iglezz, 21:53 10-01-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iglezz
Вы Волшебник !
Знаете, скока времени Вы мне сэкономили. Многие Часы !!!
Огромное Спасибо за маленькую, но такую нужную мне полезняшку.

Всего записей: 2375 | Зарегистр. 11-12-2002 | Отправлено: 21:59 10-01-2020 | Исправлено: kot1313, 22:00 10-01-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iglezz
А можно по этой же схеме массово сделать следующее:
 
1. Найти все файлы с расширением .lnk (ссылки\ярлыки) в папке (обязательно включая вложенные)
2. Изменить во всех найденных файлах часть адреса, указанную в вкладке "Ярлык"  
в окошках "Объект" и "Рабочая папка".
 
Например, у всех ярлыков в папке эти строчки начинаются с C:\Папка\... адрес конкретного файла ...
Нужно поменять только часть адреса - например C:\Папка\... на D:\Папка1\... ,  
А всю остальную часть адреса оставить такой, какой она была.
 
Конечно, это уже не операции с реестром, а редактирование файла .lnk (если его открыть через ТС блокнотом, то эти адреса видны и поддаются редактированию)

Всего записей: 2375 | Зарегистр. 11-12-2002 | Отправлено: 18:52 11-01-2020 | Исправлено: kot1313, 22:24 11-01-2020
naposidi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
.lnk можно и как hex редактировать, есть маленькие штучки для этого.

Всего записей: 61 | Зарегистр. 05-12-2018 | Отправлено: 02:47 12-01-2020
Furee



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
naposidi
Цитата:
можно и как hex редактировать, есть маленькие штучки для этого.

Не посоветуете какие?

----------
Furee will make your Kaspersky be free ;)

Всего записей: 765 | Зарегистр. 13-10-2014 | Отправлено: 02:55 12-01-2020
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kot1313
Цитата:
А можно по этой же схеме массово сделать следующее
А если погуглить на пол-шишечки?  
http://forum.wincmd.ru/viewtopic.php?t=12701&postdays=0&postorder=asc&&start=0
http://jacquelin.potier.free.fr/ShortcutsSearchAndReplace/
https://coderquestion.ru/q/484560/redaktirovaniye-svoystv-yarlyka-lnk-s-pomoshch-yu-powershell
http://corz.org/windows/software/accessories/LiNKFixer.php
http://www.optimumx.com/download/Shortcut.zip
...
...и даже powergrep это может.

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

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

Код:
for /f "tokens=1*" %%A in ('"whoami /user | find /i "S-1-5""') do set SID=%%B
set "Found=HKEY_CURRENT_USER"
set "Modif=HKEY_USERS\%SID%"
...
for /f "tokens=*" %%S in ('findstr /i /v /c:"Windows Registry Editor" /c:";" "%%F"') do (
        set "a=%%S"
        set "String=!a:%Found%=%Modif%!"
        echo !String!>> "%Output%"
)

Если строка вроде пустая, но на самом деле состоит из табуляции, то выводит
HKEY_CURRENT_USER=HKEY_USERS\S-1-5-21-1315454335-418218969-969974149-1001
Как победить?

Код:
if "%%S" NEQ "" (

Будет правильно?
 
 

Всего записей: 95 | Зарегистр. 02-01-2020 | Отправлено: 10:06 13-01-2020 | Исправлено: Galiley, 10:07 13-01-2020
iglezz

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

Цитата:
А можно по этой же схеме массово сделать следующее:
 ...

Без дополнительных программ, только средствами ОС (WSH JScript):
Подробнее...

Всего записей: 1395 | Зарегистр. 18-02-2003 | Отправлено: 12:04 13-01-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