Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Ответить
Настройки темы
CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Clip_8.jpg
(68.2 Kb, 46 просмотров)
Добрый день!

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

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

Отправлено: 12:58, 04-08-2009

 

Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


1. Непонятно, откуда брать названия партнеров. Если как в примере (Партнер-1, Партнер-2, etc) то по скольку штук?
2. Непонятно, какие права доступа Вам нужны. Уточните конкретнее, например Группе "adm" ресурсы "Contacts" и "Information" полные прав, а на остальные папки - только чтение, Группе "Managers" полные права на "PriceBooks" и "Products" и т.д.

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 13:23, 04-08-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:15, 04-08-2009 | #3


Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


Вот, наверно так можно (ошибки не отрабатываются, но можно добавить вывод %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
и т.д.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:53, 04-08-2009 | #4


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:52, 04-08-2009 | #5


Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


...

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

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

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 16:32, 04-08-2009 | #6


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 07:25, 05-08-2009 | #7


Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


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

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 11:31, 05-08-2009 | #8


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 13:03, 05-08-2009 | #9


Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


Извиняюсь за задержку - была работа.
Чтож, добавляем краткий лог-файл (появится рядом с батником) и запускаем еще раз. Лог-файл прошу выложить сюда.
Можно для скорости и во избежание засирания форума (не уверен, что это по правилам форума) связаться по асе: 268808419

Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion

set Wrk=D:\Test
set List=D:\Partners.txt
set Log=%~dpn0.log

if not Exist %List% (
echo Error: List-file not found!>>%Log%
exit
)
for /F "Tokens=* Delims=" %%P in (%List%) do (
cd /D %Wrk%
echo Preparing "%%P" at !CD! (%Wrk%^) >>%Log%
Title Preparing "%%P"
set Letter=%%P
set Letter=!Letter:~0,1!
if not exist !Letter! md !Letter!
cd !Letter!
echo  ... enter !CD!>>%Log%
if not exist "%%P" md "%%P"
cd "%%P"
echo  ... enter !CD!>>%Log%
for %%N in (Contracts,Information,"Other Correspondence",Pricebooks,Products,Projects) do md %%N
dir /b /on>>%Log%

xcacls Contracts /E /G "otccorporation\DL contracts FA":F >>%Log%
xcacls Contracts /E /G "otccorporation\Administrator":F >>%Log%
xcacls Contracts /E /G "otccorporation\DL contracts RO":R >>%Log%
xcacls Information /E /G "otccorporation\DL Information FA":F >>%Log%
xcacls Information /E /G "otccorporation\Administrator":F >>%Log%
xcacls Information /E /G "otccorporation\DL Information RO":R >>%Log%
xcacls Other Correspondence /E /G "otccorporation\DL other correspondence FA":F >>%Log%
xcacls Other Correspondence /E /G "otccorporation\Administrator":F >>%Log%
xcacls Pricebooks /E /G "otccorporation\DL Pricebooks FA":F >>%Log%
xcacls Pricebooks /E /G "otccorporation\Administrator":F >>%Log%
xcacls Pricebooks /E /G "otccorporation\DL Pricebooks RO":R >>%Log%
xcacls Products /E /G "otccorporation\DL Products FA":F >>%Log%
xcacls Products /E /G "otccorporation\Administrator":F >>%Log%
xcacls Products /E /G "otccorporation\DL Products RO":R >>%Log%
xcacls Projects /E /G "otccorporation\DL Projects FA":F >>%Log%
xcacls Projects /E /G "otccorporation\Administrator":F >>%Log%
)

-------
Как сказало Дерево Дровосеку: "я - пень".

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:36, 06-08-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Создать кучу папок, дать разрешения.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Как на XP создать загрузочний экран высокой четкости (разрешения) Homiak Microsoft Windows 2000/XP 9 29-04-2008 16:18
Копируются ли разрешения при копировании папок на комп вне домена? Raman Microsoft Windows NT/2000/2003 3 29-10-2007 10:23
Доступ - Как группе users дать права на создание общих папок и установку принтеров Marlboroman Microsoft Windows 2000/XP 6 12-10-2007 15:14
[Ъ] Разрешения для файлов и папок Sham Microsoft Windows NT/2000/2003 3 03-09-2006 11:26
Разрешения для Перенаправленных папок Keha Microsoft Windows NT/2000/2003 1 26-05-2006 17:23




 
Переход