CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Аватара пользователя
senseye

CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Сообщение senseye »

Добрый день!



есть следующая структура:

есть папка Workplace, в ней папки, соответствующие каждой букве английского алфавита (A, B, C, D ... Z), в каждой "букве" куча папок соответствующих названиям компаний - партнеров, в них еще 6 папок, на которые нужно разные доступы разным группам дать.

Задача:

Создать в папках - буквах папки - партнеры и в них создать по 6 папок. и назначить на все это безобразие соответствующие права доступа.



привожу схему для наглядности:
Вложения

[Расширение jpg было запрещено, вложение больше недоступно.]

Аватара пользователя
NiOl

Re: CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Сообщение NiOl »

1. Непонятно, откуда брать названия партнеров. Если как в примере (Партнер-1, Партнер-2, etc) то по скольку штук?

2. Непонятно, какие права доступа Вам нужны. Уточните конкретнее, например Группе "adm" ресурсы "Contacts" и "Information" полные прав, а на остальные папки - только чтение, Группе "Managers" полные права на "PriceBooks" и "Products" и т.д.
Аватара пользователя
senseye

Re: CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Сообщение senseye »

Классно! получилось! папки создаются правильно, по первой букве фирмы, дальше - весь пучок папок в "фирме - партнере", но вот мой скрипт как то странно работает, права назначает, но совершенно левые, у меня на группы стоит назначение он назначает отдельны людям... странно вот лог:
Вложения
Вложение script_folders.rar больше недоступно
Вложения
script_folders.rar
(1.96 КБ) 0 скачиваний
script_folders.rar
(1.96 КБ) 0 скачиваний
Аватара пользователя
senseye

Re: CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Сообщение senseye »

1. Названия партнеров брать из зарее подготовленного списка (txt, xls, ini что удобнее)

я вижу примерно следующее:

letter: A

Astana-finance

Alma-TV

Asteros

а создавать будет примерно так:

if letter:=A then makedir F:\Workplace\A\....

ну..это конечно фантазии, но, я думаю, логика ясна. Изображение

2. в приведенном скрипте, написанном мной для раздачи прав, все описано.

Цитата:

xcacls Contracts /E /G "otccorporation\DL contracts FA":F

xcacls Contracts /E /G "otccorporation\Administrator":F

xcacls Contracts /E /G "otccorporation\DL contracts RO":R

xcacls Information /E /G "otccorporation\DL Information FA":F

xcacls Information /E /G "otccorporation\Administrator":F

xcacls Information /E /G "otccorporation\DL Information RO":R

xcacls Other Correspondence /E /G "otccorporation\DL other correspondence FA":F

xcacls Other Correspondence /E /G "otccorporation\Administrator":F

xcacls Pricebooks /E /G "otccorporation\DL Pricebooks FA":F

xcacls Pricebooks /E /G "otccorporation\Administrator":F

xcacls Pricebooks /E /G "otccorporation\DL Pricebooks RO":R

xcacls Products /E /G "otccorporation\DL Products FA":F

xcacls Products /E /G "otccorporation\Administrator":F

xcacls Products /E /G "otccorporation\DL Products RO":R

xcacls Projects /E /G "otccorporation\DL Projects FA":F

xcacls Projects /E /G "otccorporation\Administrator":F
Аватара пользователя
NiOl

Re: CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Сообщение NiOl »

Вот, наверно так можно (ошибки не отрабатываются, но можно добавить вывод %ErrorLevel% в лог-файл):

Код:

Код: Выделить всё

@Echo Off
SetLocal EnableDelayedExpansion
set Wrk=C:\Temp
set List=C:\Partners.txt
for /F "Tokens=* Delims=" %%P in (%List%) do (
cd /D %Wrk%
Title Preparing "%%P"
set Letter=%%P
set Letter=!Letter:~0,1!
if not exist !Letter! md !Letter!
cd !Letter!
if not exist "%%P" md "%%P"
cd "%%P"
for %%N in (Contracts,Information,"Other Correspondence",Pricebooks,Products,Projects) do md %%N
rem Далее Ваш скрипт, только на счет "Xcacls" я не уверен - ни в XP-SP3 ни в W2k3SP1 такой команды не нашел...
cacls Contracts /E /G "otccorporation\DL contracts FA":F
cacls Contracts /E /G "otccorporation\Administrator":F
cacls Contracts /E /G "otccorporation\DL contracts RO":R
cacls Information /E /G "otccorporation\DL Information FA":F
cacls Information /E /G "otccorporation\Administrator":F
cacls Information /E /G "otccorporation\DL Information RO":R
cacls Other Correspondence /E /G "otccorporation\DL other correspondence FA":F
cacls Other Correspondence /E /G "otccorporation\Administrator":F
cacls Pricebooks /E /G "otccorporation\DL Pricebooks FA":F
cacls Pricebooks /E /G "otccorporation\Administrator":F
cacls Pricebooks /E /G "otccorporation\DL Pricebooks RO":R
cacls Products /E /G "otccorporation\DL Products FA":F
cacls Products /E /G "otccorporation\Administrator":F
cacls Products /E /G "otccorporation\DL Products RO":R
cacls Projects /E /G "otccorporation\DL Projects FA":F
cacls Projects /E /G "otccorporation\Administrator":F
)

файл с фирмами должен иметь такой вид:

Код:

Код: Выделить всё

Allergy
Anatoly Vasserman inc.
Booze
Cactus & co
Chlamydia Beauty Industrial
и т.д.
Аватара пользователя
senseye

Re: CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Сообщение senseye »

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

Re: CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Сообщение senseye »

Изображение ... Изображение



Поясняю работу скрипта:

в переменные Wrk и List (кстати извиняюсь - там остались значения, на которых этот скрипт и тестил) вписывается полный путь к Вашей папке (Workplace кажется) и путь с именем файла списка фирм.



Далее в цикле из файла выбирается очередная фирма, от нее выделяется первая буква для раскладывания по каталогам A-B-C-D...W-Z, создается дерево каталогов Буква-Фирма, внутри создается пачка Ваших стандартных каталогов Contracts .. Projects и для них назначаются права по Вашему скрипту.

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

Re: CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Сообщение senseye »

xcacls это отдельно устанавливаемая программа, которая работает из командной строки, скрипт я проверял свой - работает нормально. Мне просто сохранить Батник нужно, так ведь? я впервые со скриптами такими дело имею )
Аватара пользователя
senseye

Re: CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Сообщение senseye »

Cоздаешь текстовый файл с расширением *.BAT, например Partners.bat

В него через буфер обмена вставляешь текст, исправляешь строки set Wrk=C:\Temp и set List=C:\Partners.txt на нужные тебе, сохраняешь и запускаешь. После чего пробегаешь по некоторым фирмам и проверяешь назначенные права.
Аватара пользователя
NiOl

Re: CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Сообщение NiOl »

Создал файл Partners.txt написал туда "партнеров" на разные буквы начинающихся, создал папку D:/test, кинул в корень D:/ файл script_folders.bat с твоим кодом. изменил set Wrk=D:\test и set List=D:\Partners.txt , Запускаю, на долю секунды появляется черное окно командной строки, но ничего не создается, пробовал убирать cacls, не помогло, тоже самое...
Ответить

Вернуться в «Скриптовые языки администрирования Windows»