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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

Maz



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

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.51 до Windows 10) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 4.0, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на текущей версии ОС. Ссылки wdho.ru tinyupload.com dbree.org
 
· Сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 37447 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: Maz, 07:16 24-04-2021
syrenium

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

Цитата:
/deny

Запретить? А что тогда "/remove" делает?
 
Результат Вашей команды:

Цитата:
everyone: Сопоставление между именами пользователей и идентификаторами безопасности не было произведено.
Успешно обработано 0 файлов; не удалось обработать 1 файлов

Также не получается:
icacls "C:\1" /deny Все: (oi)(ci)(f) /inheritance:r
icacls "C:\1" /deny *S-1-1-0: (oi)(ci)(f) /inheritance:r

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 23:07 11-07-2021 | Исправлено: syrenium, 23:49 11-07-2021
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
syrenium
Администрированию Windows посвящён целый раздел: лучше спросить там, а не «заодно» здесь.
Everyone (Guests, Users…) это именной указатель, который проще запомнить, чем цифровой, но
в таком виде он работает лишь в англоязычных ОС — для универсальности его нужно перевести
в цифровой вид, глядя в микродоки и ss64 (сюда полезно заглядывать и при работе с батниками).
Получаем … /deny *S-1-1-0:(oi)(ci)(f)без пробела между 0: и (oi). См. скриншот применения.
Помните, способ экстремальный: усложняет доступ самому админу и отрезает папку от сервисов.

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 00:05 12-07-2021 | Исправлено: kraeved, 08:39 12-07-2021
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kraeved
Лучше так
Цитата:
echo list disk | diskpart | findstr /r /c:"^ .*[0-9]"

Всего записей: 10089 | Зарегистр. 11-03-2002 | Отправлено: 07:06 12-07-2021 | Исправлено: Pasha_ZZZ, 07:06 12-07-2021
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Ваш вариант срезает названия колонок.
 
Disk ###  Status         Size     Free     Dyn  Gpt
--------  -------------  -------  -------  ---  ---

Disk 0    Online          232 GB  1024 KB        *
Disk 1    Online          465 GB  1024 KB   *

 
Тут и бывалый-то растеряется с тем, что такое 1024 (это не свободное место, а неразмеченное),
так ещё и «какие-то» звёздочки. Названия помогают здесь снизить вероятность ошибки, которая
в случае работы со столь деликатным инструментом может лишить данных или доступа к ним.

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 07:44 12-07-2021 | Исправлено: kraeved, 07:47 12-07-2021
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kraeved
Я это использую в цикле for /f, чтобы получить только номера дисков и проверить, существует ли введенный номер

Всего записей: 10089 | Зарегистр. 11-03-2002 | Отправлено: 07:48 12-07-2021
syrenium

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

Цитата:
Получаем … /deny *S-1-1-0:(oi)(ci)(f) … без пробела

Я вводил без пробела, просто на форуме по умолчанию смайлик ставился.

Цитата:
Everyone (Guests, Users…)

Да, это я понял, поэтому и вводил "Все" и "*S-1-1-0".
Наверное, я неправильно объяснил.
Нужно удалить всех пользователей, которым давались какие-либо права (разрешения и запреты).
На Вашем скриншоте это "Everyone".

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 17:01 12-07-2021 | Исправлено: syrenium, 17:01 12-07-2021
syrenium

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никак не получается.
Пробовал

Код:
icacls "D:\1" /inheritance:r

Работает нормально, удаляет все наследования.

Код:
icacls "D:\1" /remove:g *S-1-1-0
icacls "D:\1" /deny *S-1-1-0:(oi)(ci)(f) /inheritance:r
icacls "D:\1" /remove *S-1-1-0
icacls "D:\1" /remove "Пользователи"
 

Пишет, что файл обработан успешно, но изменений не происходит.

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 14:34 14-07-2021
GCRaistlin



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

Цитата:
Нужно удалить всех пользователей, которым давались какие-либо права (разрешения и запреты).


Код:
icacls d:\1 /reset


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

Всего записей: 3100 | Зарегистр. 18-04-2005 | Отправлено: 14:56 14-07-2021
syrenium

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Спасибо!
После сброса включается наследование.
Тогда, получается, для полной очистки перечень команд такой:

Код:
takeown /f "D:\1" /a
icacls "D:\1" /reset
icacls "D:\1" /inheritance:r

Или вместо "takeown" лучше использовать "icacls /setowner"?

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 15:54 14-07-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
syrenium
Непонятно, что вы желаете получить.

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

Всего записей: 3100 | Зарегистр. 18-04-2005 | Отправлено: 16:09 14-07-2021
syrenium

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
ПКМ - Свойства файла - Безопасность - Дополнительно.
Нужно удалить всех субъектов, которым давались какие-либо разрешения.
Обычно там только наследованные, но могут быть и добавленные вручную.
Ровно как владелец файла может быть изменен вручную.
Поэтому сначала ставим владельцем файла Администратора, потом делам сброс, и потом удаляем наследование.
Есть более простой способ?

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 16:15 14-07-2021
GCRaistlin



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

Цитата:
Нужно удалить всех субъектов, которым давались какие-либо разрешения.

Вы хотите получить пустой список ACL?

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

Всего записей: 3100 | Зарегистр. 18-04-2005 | Отправлено: 16:19 14-07-2021
syrenium

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

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 16:28 14-07-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
syrenium
Тогда, вероятно, действуете правильно. Насчет takeown только не знаю: не пользовался.

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

Всего записей: 3100 | Зарегистр. 18-04-2005 | Отправлено: 16:56 14-07-2021
syrenium

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть необходимость создать batch-файл, который создавал бы загрузочную флешку путем использования diskpart.
При этом, выводился список дисков с предложением выбрать номер диска.
После выбора номера диска пользователя просили подтвердить выбор (своего рода защита от ошибочного выбора и потери данных).
Если Y - то запускались иные команды diskpart.
Если N - то предложение ввести номер диска (и зацикливалось при выборе диска и N).
Использовал пример уважаемого kraeved, немного доработал, получилось следующее:

Код:
@echo off
rem Выводим перечень дисков
echo list disk | diskpart | findstr /b /c:" "
rem Ждём ввода от пользователя
set /p "_disk=Type number of disk, or press Ctrl+Break to quit: "
CHOICE /C yn /M "Подтвердите правильность выбора диска: Y (да) или N (нет)"
if %errorlevel%==1 goto :M1
if %errorlevel%==2 goto :M2
:M2
set /p "_disk=Номер диска: "
CHOICE /C yn /M "Подтвердите правильность выбора диска: Y (да) или N (нет)"
if %errorlevel%==1 goto :M1
if %errorlevel%==2 goto :M2
:M1
rem Создаём сценарий
> script.txt (
    rem Начинаем строку с echo, продолжаем командой для diskpart
    echo SELECT DISK %_disk%
    echo EXIT
)
rem Запускаем сценарий
diskpart /s script.txt

Вроде, работает.
Подскажите, правильно ли все сделал? Или можно как-нибудь по-другому?

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 20:53 15-07-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
syrenium
Если работает - сделали правильно. Ну, а по-другому всегда можно.

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

Всего записей: 3100 | Зарегистр. 18-04-2005 | Отправлено: 20:58 15-07-2021
syrenium

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

Есть такое понятие, как спагетти-код
Спагетти-код
Поскольку я "тыкаюсь" по командам через поиск и help, поэтому и спрашиваю более знающих людей, можно ли как-нибудь "эргономичнее" реализовать?
Просто совет.

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 21:03 15-07-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
syrenium
Ну, например, зачем вам choice, если есть set /p? Лишняя внешняя утилита...

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

Всего записей: 3100 | Зарегистр. 18-04-2005 | Отправлено: 21:08 15-07-2021
syrenium

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

Код:
Set /p x="Подтвердите правильность выбора диска: Да (y) или Нет (n)"
if %x%==y goto :M1
if %x%==n goto :M2

Как-то так?

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 21:12 15-07-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Примерно. Если вообще это самое подтверждение нужно. Пользователь может сдуру ввести не тот номер, да, но потом сдуру и Y нажать может. Не спасет.

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

Всего записей: 3100 | Зарегистр. 18-04-2005 | Отправлено: 21:21 15-07-2021
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru