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

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

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
https://answers.microsoft.com/en-us/windows/forum/all/what-are-the-padlock-icons-on-folders-for/e4b100a7-f65d-49c6-8555-6df40d35676a

Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 06:53 10-04-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey
У меня к Вам огромная просьба не давать мне ссылки на на руководства на англицком и ихние мануалы.  
Я конечно понимаю, что Вы хотите меня заставить учить источники,  
но я просил короткий ответ на русском  
А не отсылку на гроссбухи по языкам программирования и техническим нюансам виндоуз.
Если Вы не хотите просто дать мне короткий ответ, то прошу Вас вообще мне не помогать.
!!! У меня нету времени читать руководства, которые я и сам уже давно нашел !!!
Я задаю сдесь вопросы специалистам, чтоб сэкономить своё время (за счёт нечтения этих руководств),  
а не для того, чтоб его потратить исчо больше.  

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 06:59 10-04-2020 | Исправлено: kot1313, 07:04 10-04-2020
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
Краткий ответ на русском для второго вопроса: поведение правильное; программ которые способны корректно работать (в т.ч. и удалять) с симлинками достаточно, но они разные по использованию (напр. far (как фм) или lse (как explorer extension) и т.д.) и универсального лучшего выбора нет (зависит от конкретных потребностей).
Подробности - см. Google для поиска обзора на русском языке:
Цитата:
Jonmey
У меня к Вам огромная просьба не давать мне ссылки на на руководства на англицком и ихние мануалы.

Кроме этого обсуждение символьных и иных ссылок и методов работы с ними далеко выходит за рамки данной темы, посвященной командным файлам.

Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 08:16 10-04-2020 | Исправлено: Jonmey, 08:34 10-04-2020
kot1313



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




Все благодарности в ПМ

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 12:24 10-04-2020 | Исправлено: kot1313, 02:10 12-04-2020
m00slim25



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

Всего записей: 1040 | Зарегистр. 30-05-2006 | Отправлено: 06:19 13-04-2020 | Исправлено: m00slim25, 07:43 13-04-2020
GCRaistlin



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

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

Всего записей: 4132 | Зарегистр. 18-04-2005 | Отправлено: 09:44 13-04-2020
us0r



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени
 
Подскажите, есть такая строка:

Код:
dsmod group "CN=Сотрудники_RW,OU=NTFS_Groups,OU=Unit,DC=ORGANIZATION,DC=local" -addmbr "CN=Очень Важный Сотрудник,OU=UnitX,DC=Organization,DC=local"

 
Она в cmd отабатывает норм. Сотрудник в группу добавляется.
 
А есть такой вот батник:
 

Код:
@echo off
cls
setlocal enabledelayedexpansion
 
set /p EmployerName="Part of name of employers: "
set /p groupname="Groupname : "
 
for /f "usebackq tokens=2 delims==" %%q in (`wmic useraccount where 'fullname like "%%%EmployerName%%%"' get FullName /format:list ^| find /i ^"FullName^"`) do (
dsmod group "CN=%groupname%,OU=NTFS_Groups,OU=Unit,DC=ORGANIZATION,DC=local" -addmbr "CN=%%q,OU=UnitX,DC=Organization,DC=local"
)
pause
endlocal
 

 
И вот тут оно мне выдаёт "dsmod Неудачно: … :Объект каталога не найден."
 
Не важно, будет ли %groupname% с кириллицей или латиницей.
 
Куда рыть?

Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 18:13 13-04-2020 | Исправлено: us0r, 18:18 13-04-2020
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, кто подскажет как экранировать список файлов, наличие которых надо проверить, если в них присутствует пробел?
 
Так не работает:

Код:
 
set "SoundsPackagesList="Data\pack 1.bsa" "Data\pack 2.bsa" "Data\pack N.bsa""
 
if exist "%SoundsPackagesList%" echo ok
 

 
И так тоже:

Код:
 
set "%SoundsPackagesList%="pack 1.bsa" "pack 2.bsa" "pack N.bsa""  
 
cd Data\
if exist "%SoundsPackagesList%" echo ok
cd ..
 

 
А вот такая конструкция, для удаления всего, кроме файлов из списка UninstallExclusionFiles, ведет себя прекрасно:

Код:
 
for %%F in ("%UninstallExclusionFiles%") do if exist "Data\%%~F" attrib +r "Data\%%~F"
    >nul del "Data\*.*" /q
        for %%F in (%UninstallExclusionFiles%) do if exist "Data\%%~F" attrib -r "Data\%%~F"
            for /f "usebackq delims=" %%D in (`2^>nul dir "Data\" /b /a:d`) do rd /s /q "Data\%%D"
 

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 00:37 16-04-2020 | Исправлено: Silver Raven, 00:40 16-04-2020
m00slim25



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven
Из третьего примера разве не очевидно, что нужно делать это в цикле?!

Код:
Set "SoundsPackagesList="pack 1.bsa","pack 2.bsa","pack N.bsa""
For %%F In (%SoundsPackagesList%) Do (If Exist "Data\%%~F" Echo "Data\%%~F" is ok)

Совет: Избегайте использования односимвольных переменных a d f n p s t x z в операторе FOR.

Всего записей: 1040 | Зарегистр. 30-05-2006 | Отправлено: 04:29 16-04-2020 | Исправлено: m00slim25, 19:30 26-04-2020
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
m00slim25
Не додумался как-то. Сори.
 
А если мне нужно запихнуть туда три списка с разными действиями для каждого. Я так понимаю лепить цикл несколько раз подряд - идиотизм. А можно засунуть все в один? И если ничего не нашли вызываем ошибку, как отдельный пункт call-ом.

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 12:09 16-04-2020
generator324

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть такая команда, для добавления на Рабочий стол Windows, спрятанных злыми дядями из M$ значков "Компьютер", "Сеть" и т.п. :

Код:
rundll32.exe shell32.dll,Control_RunDLL desk.cpl @0,0

А как сделать, чтобы при запуске сразу включались (или выключались) нужные значки через командную строку? Т.е. чем дополнить команду.
Твики реестра - не предлагать .

Всего записей: 1102 | Зарегистр. 11-01-2019 | Отправлено: 15:03 16-04-2020
m00slim25



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

Цитата:
А если мне нужно запихнуть туда три списка с разными действиями для каждого. Я так понимаю лепить цикл несколько раз подряд - идиотизм. А можно засунуть все в один? И если ничего не нашли вызываем ошибку, как отдельный пункт call-ом.

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

Всего записей: 1040 | Зарегистр. 30-05-2006 | Отправлено: 15:44 16-04-2020
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
m00slim25
Так если бы оно работало... Только по первому списку (где два набора файлов) отрабатывает корректно. Если файлов одного из наборов нет - вываливает заготовленную ошибку. Которая должна отображаться только при их полном отсутствии в искомой папке Data.
 

Код:
 
set "HDSoundsPackagesENGLocalization="Unofficial HD Audio Project - ENG0.bsa" "Unofficial HD Audio Project - ENG1.bsa" "Unofficial HD Audio Project - ENG2.bsa" "Unofficial HD Audio Project - ENG3.bsa" "Unofficial HD Audio Project - ENG4.bsa""
 
set "HDSoundsPackagesRUSLocalization="Unofficial HD Audio Project - RUS0.bsa" "Unofficial HD Audio Project - RUS1.bsa" "Unofficial HD Audio Project - RUS2.bsa" "Unofficial HD Audio Project - RUS3.bsa" "Unofficial HD Audio Project - RUS4.bsa""
 
set "HDSoundsPackagesENG&RUSLocalization="Unofficial HD Audio Project - ENG0.bsa" "Unofficial HD Audio Project - ENG1.bsa" "Unofficial HD Audio Project - ENG2.bsa" "Unofficial HD Audio Project - ENG3.bsa" "Unofficial HD Audio Project - ENG4.bsa" "Unofficial HD Audio Project - RUS0.bsa" "Unofficial HD Audio Project - RUS1.bsa" "Unofficial HD Audio Project - RUS2.bsa" "Unofficial HD Audio Project - RUS3.bsa" "Unofficial HD Audio Project - RUS4.bsa""
 
 
:: Если установлены HD пакеты русско и англоязычной локализации - переходим в меню выбора языка озвучивания
for %%F in (%HDSoundsPackagesENG&RUSLocalization%) do (if exist "Data\%%~F" call :option_2_hd_sounds_packages_change_localization)
 
:: Проверяем наличие HD пакетов англоязычной локализации
for %%F in (%HDSoundsPackagesENGLocalization%) do (if exist "Data\%%~F" call :option_2_install_hd_sounds_packages_eng)
 
:: Проверяем наличие HD пакетов русскоязычной локализации
for %%F in (%HDSoundsPackagesRUSLocalization%) do (if exist "Data\%%~F" call :option_2_install_hd_sounds_packages_rus)
 
:: Ошибка - выводимая при отсутствии HD пакетов локализации и музыки в папке с игрой
cls
color fc
 @echo.
 @echo *ОШИБКА! HD пакеты локализации не обнаружены в папке с игрой!
 @echo.
 @echo.
 @echo Используйте предыдущее меню для их загрузки.  
 @echo Если вы уверены в корректности установки, свяжитесь с автором сборки и предоставьте информацию о всей последовательности действий.
 @echo.
 @echo.  
pause
goto :option_2_hd_sounds_packages_menu
 

 
В общем, пытаюсь осилить алгоритм вида:
Какой набор файлов (пакетов) есть?
Русский - call :option_2_install_hd_sounds_packages_rus
Английский - call :option_2_install_hd_sounds_packages_eng
Есть и то и другое? - call :option_2_install_hd_sounds_packages_eng&rus
Ничего не нашли? - вон в конце заранее заготовленное сообщение об ошибке и возврат в главное меню

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 17:33 16-04-2020 | Исправлено: Silver Raven, 17:37 16-04-2020
m00slim25



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

Цитата:
Так если бы оно работало...

Нет никакой нужды делать 3ий Set, первых двух, раздельных для каждого языка, вполне достаточно Подробнее
 
PS. А вообще сдаётся мне, Вы масло масляное сооружаете, в корне неверно построив архитектуру программы. Поясню: Сначала проверьте наличие обоих пакетов, установите переменные-флаги, показывающие что пакет(ы) на месте, либо отсутствуют. Потом постройте меню, и уже из меню, используя переменные-флаги, вызывайте процедуры установки конкретного пакета, либо сообщайте, что пакеты вовсе не обнаружены, и устанавливать нечего. Так будет и код проще и яснее, и Вам станет всё гораздо понятнее.

Всего записей: 1040 | Зарегистр. 30-05-2006 | Отправлено: 19:13 16-04-2020 | Исправлено: m00slim25, 19:17 16-04-2020
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
m00slim25
Спасибо, все действительно прекрасно, только можно заставить все это дело учитывать наличие архива Unofficial HD Audio Project - Music.bsa?
 
Мне также, когда-то помогли с кодом, изменяющим части строк в конфиге, через который юзеру отдается статус установки тех или иных компонентов таком виде:

 
Что, где сломал не вижу.

Код:
 
 >>$ (<nul set /p="%~1"|>nul find "HDSoundsPackagesLocalizationStatusInfo=" && (
   echo %HDSoundsPackagesLocalizationStatusInfo%|>nul find "нет данных" && (echo HDSoundsPackagesLocalizationStatus=Русский & echo:)
  ) || (
   echo %~1& echo:
  )
 )
exit /b
goto :write_hd_sounds_packages_status
 
:: Установка общего идентификатора HD пакетов локализации и музыки
:: Запись в конфиг-файл hd_sounds_packages.cfg
:write_hd_sounds_packages_status
 >>$ (<nul set /p="%~1"|>nul find "HDSoundsPackagesStatusInfo=" && (
   echo %HDSoundsPackagesStatusInfo%|>nul find "не установлен" && (echo HDSoundsPackagesStatus=установлен& echo:)
  ) || (
   echo %~1& echo:
  )
 )
exit /b
 

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 20:55 16-04-2020 | Исправлено: Silver Raven, 21:05 16-04-2020
Smitis



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

Цитата:
Т.е. чем дополнить команду.

Ничем.

Цитата:
Твики реестра - не предлагать

Вашим способом это и будет "твик реестра", только сделанный через графический интерфейс.
 
Можете попробовать создать на рабочем столе папки типа
Computer.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
Network Connections.{7007ACC7-3202-11D1-AAD2-00805FC1270E}
и т.п. Это будет не "твик реестра".

----------
Разум когда-нибудь победит

Всего записей: 3452 | Зарегистр. 09-02-2003 | Отправлено: 21:59 16-04-2020
m00slim25



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

Цитата:
Спасибо, все действительно прекрасно, только можно заставить все это дело учитывать наличие архива Unofficial HD Audio Project - Music.bsa?

Я не понял вопроса... Какие затруднения?

Всего записей: 1040 | Зарегистр. 30-05-2006 | Отправлено: 03:12 17-04-2020
generator324

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

Цитата:
> Т.е. чем дополнить команду.
 
Ничем.  

Жаль.

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

Да. Именно так и нужно.

Цитата:
Можете попробовать создать на рабочем столе папки типа
Computer.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
Network Connections.{7007ACC7-3202-11D1-AAD2-00805FC1270E}
и т.п. Это будет не "твик реестра".

Не могу проверить сейчас (чуть позже), но как это будет выглядеть (команда)?  

Код:
md Computer.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
?
При этом на Рабочем столе так и останутся "некрасивости" вида Computer.{20D04FE0-3AEA-1069-A2D8-08002B30309D} ? Этого не хотелось бы, тогда уж лучше твик реестра.
Беда в том, что твик реестра распространяется только на конкретного пользователя, а нужно - на всех, в том числе и вновь созданных.

Всего записей: 1102 | Зарегистр. 11-01-2019 | Отправлено: 09:24 17-04-2020
NIKZZZZ



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

Цитата:
При этом на Рабочем столе так и останутся "некрасивости" вида Computer.{20D04FE0-3AEA-1069-A2D8-08002B30309D}  

Папку надо создавать не на рабочем столе, а в любом удобном месте.
А на рабочем столе надо создать ярлык к этой папке, имя - по своему усмотрению.

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:58 17-04-2020
generator324

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

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

Это - не очень удобно, более того - просто не нужно. Поясню. При наличии того же "Этот компьютер" на Рабочем столе, есть возможность вызова контентного меню по ПКМ - в этом всё удобство его (Мой Компьютер) использования. Без этого (ярлык), "Этот компьютер" на рабочем столе нафик не нужен...
Как равным образом и "Сеть"

Всего записей: 1102 | Зарегистр. 11-01-2019 | Отправлено: 12:11 17-04-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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru