PDA

Показать полную графическую версию : Автоматизация создания папок и раздача прав доступа NTFS


Страниц : [1] 2

Friek
08-11-2014, 00:07
Всем добрый вечер. Есть необходимость создать на нескольких флешках и жестких дисках одинаковые папки с одинаковыми правами.
Для этого я попытался написать скрипт, и вроде написал. Он работает, но я столкнулся с некоторыми для меня трудностями.
При запуске готового батника от имени администратора (правой кнопкой мыши по файлу) все операции проводятся не с текущей папкой а с папкой системы C:\Windows\system32
Права администратора мне нужны для того, чтобы сменить владельца с большинства папок с текущего пользователя на группу администраторов.
Сам я не особо в скриптах, но учиться не боюсь
Буду рад помощи от знатоков форума.
Вот сам код:

@echo off

rem создание переменных
set Sid1=Мой Sid
set Name1=Имя моего пользователя

rem установка прав доступа NTFS на корневую директорию
rem ВНИМАНИЕ!!! НЕ запускать из системных папок!!!
icacls %CD% /inheritance:r
icacls %CD% /grant *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls %CD% /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls %CD% /grant Пользователи:(OI)(CI)RX /T /C /L /Q
icacls %CD% /grant Все:(OI)(CI)RX /T /C /L /Q

rem создание папки %CD%\Users:
if exist %CD%\Users goto er1_Users
mkdir %CD%\Users
rem Установка прав доступа NTFS для папки %CD%\Users
icacls %CD%\Users /inheritance:r
icacls %CD%\Users /grant *%Sid1%:(OI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls %CD%\Users /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls %CD%\Users /grant Пользователи:(OI)(CI)RX /T /C /L /Q
icacls %CD%\Users /grant Все:(OI)(CI)RX /T /C /L /Q
rem создание файла desktop.ini
@echo.> %CD%\Users\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21813>> %CD%\Users\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\desktop.ini
attrib +r %CD%\Users
echo DONE
:createpublic
if exist %CD%\Users\Public goto er1_public
rem создание папки Public в папке Users:
mkdir %CD%\Users\Public
rem Установка прав доступа NTFS для папки Public из папки Users
icacls %CD%\Users\Public /inheritance:r
icacls %CD%\Users\Public /grant *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls %CD%\Users\Public /grant Администраторы:RX /T /C /L /Q
icacls %CD%\Users\Public /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls %CD%\Users\Public /grant Пользователи:(OI)(CI)RX /T /C /L /Q
icacls %CD%\Users\Public /grant "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /T /C /L /Q
rem создание файла Users\Public\desktop.ini
@echo.> %CD%\Users\Public\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\Public\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21816>> %CD%\Users\Public\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\Public\desktop.ini
attrib +r %CD%\Users\Public
rem создание основных папок в папке Public в папке Users
mkdir %CD%\Users\Public\Documents
rem создание файла %CD%\Users\Public\Documents\desktop.ini
@echo.> %CD%\Users\Public\Documents\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\Public\Documents\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21801>> %CD%\Users\Public\Documents\desktop.ini
@echo [ViewState]>> %CD%\Users\Public\Documents\desktop.ini
@echo Mode=>> %CD%\Users\Public\Documents\desktop.ini
@echo Vid=>> %CD%\Users\Public\Documents\desktop.ini
@echo FolderType=Documents>> %CD%\Users\Public\Documents\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\Public\Documents\desktop.ini
attrib +r %CD%\Users\Public\Documents
mkdir %CD%\Users\Public\Downloads
rem создание файла %CD%\Users\Public\Downloads\desktop.ini
@echo.> %CD%\Users\Public\Downloads\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\Public\Downloads\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21808>> %CD%\Users\Public\Downloads\desktop.ini
@echo [ViewState]>> %CD%\Users\Public\Downloads\desktop.ini
@echo Mode=>> %CD%\Users\Public\Downloads\desktop.ini
@echo Vid=>> %CD%\Users\Public\Downloads\desktop.ini
@echo FolderType=Generic>> %CD%\Users\Public\Downloads\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\Public\Downloads\desktop.ini
attrib +r %CD%\Users\Public\Downloads
mkdir %CD%\Users\Public\Music
rem создание файла %CD%\Users\Public\Music\desktop.ini
@echo.> %CD%\Users\Public\Music\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\Public\Music\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21803>> %CD%\Users\Public\Music\desktop.ini
@echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12689>> %CD%\Users\Public\Music\desktop.ini
@echo [ViewState]>> %CD%\Users\Public\Music\desktop.ini
@echo Mode=>> %CD%\Users\Public\Music\desktop.ini
@echo Vid=>> %CD%\Users\Public\Music\desktop.ini
@echo FolderType=Music>> %CD%\Users\Public\Music\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\Public\Music\desktop.ini
attrib +r %CD%\Users\Public\Music
mkdir %CD%\Users\Public\Pictures
rem создание файла %CD%\Users\Public\Pictures\desktop.ini
@echo.> %CD%\Users\Public\Pictures\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\Public\Pictures\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21802>> %CD%\Users\Public\Pictures\desktop.ini
@echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12688>> %CD%\Users\Public\Pictures\desktop.ini
@echo [ViewState]>> %CD%\Users\Public\Pictures\desktop.ini
@echo Mode=>> %CD%\Users\Public\Pictures\desktop.ini
@echo Vid=>> %CD%\Users\Public\Pictures\desktop.ini
@echo FolderType=Pictures>> %CD%\Users\Public\Pictures\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\Public\Pictures\desktop.ini
attrib +r %CD%\Users\Public\Pictures
mkdir %CD%\Users\Public\Videos
rem создание файла %CD%\Users\Public\Videos\desktop.ini
@echo.> %CD%\Users\Public\Videos\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\Public\Videos\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21804>> %CD%\Users\Public\Videos\desktop.ini
@echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12690>> %CD%\Users\Public\Videos\desktop.ini
@echo [ViewState]>> %CD%\Users\Public\Videos\desktop.ini
@echo Mode=>> %CD%\Users\Public\Videos\desktop.ini
@echo Vid=>> %CD%\Users\Public\Videos\desktop.ini
@echo FolderType=Videos>> %CD%\Users\Public\Videos\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\Public\Videos\desktop.ini
attrib +r %CD%\Users\Public\Videos
echo DONE
:createname1
if exist %CD%\Users\%Name1% goto er1_name1
rem создание папки %Name1% в папке %CD%\Users:
mkdir %CD%\Users\%Name1%
rem Установка прав доступа NTFS для папки %Name1% из папки Users
icacls %CD%\Users\%Name1% /inheritance:r
icacls %CD%\Users\%Name1% /grant *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
rem создание основных папок в папке %Name1% в папке %CD%\Users:
mkdir %CD%\Users\%Name1%\Documents
rem создание файла %CD%\Users\%Name1%\Documents\desktop.ini
@echo.> %CD%\Users\%Name1%\Documents\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo IconResource=%SystemRoot%\system32\imageres.dll,-112>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo [ViewState]>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo Mode=>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo Vid=>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo FolderType=Documents>> %CD%\Users\%Name1%\Documents\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\%Name1%\Documents\desktop.ini
attrib +r %CD%\Users\%Name1%\Documents
mkdir %CD%\Users\%Name1%\Downloads
rem создание файла %CD%\Users\%Name1%\Downloads\desktop.ini
@echo.> %CD%\Users\%Name1%\Downloads\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\%Name1%\Downloads\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798>> %CD%\Users\%Name1%\Downloads\desktop.ini
@echo IconResource=%SystemRoot%\system32\imageres.dll,-184>> %CD%\Users\%Name1%\Downloads\desktop.ini
@echo [ViewState]>> %CD%\Users\%Name1%\Downloads\desktop.ini
@echo Mode=>> %CD%\Users\%Name1%\Downloads\desktop.ini
@echo Vid=>> %CD%\Users\%Name1%\Downloads\desktop.ini
@echo FolderType=Generic>> %CD%\Users\%Name1%\Downloads\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\%Name1%\Downloads\desktop.ini
attrib +r %CD%\Users\%Name1%\Downloads
mkdir %CD%\Users\%Name1%\Favorites
rem создание файла %CD%\Users\%Name1%\Favorites\desktop.ini
@echo.> %CD%\Users\%Name1%\Favorites\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\%Name1%\Favorites\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21796>> %CD%\Users\%Name1%\Favorites\desktop.ini
@echo IconResource=%SystemRoot%\system32\imageres.dll,-115>> %CD%\Users\%Name1%\Favorites\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\%Name1%\Favorites\desktop.ini
attrib +r %CD%\Users\%Name1%\Favorites
mkdir %CD%\Users\%Name1%\Music
rem создание файла %CD%\Users\%Name1%\Music\desktop.ini
@echo.> %CD%\Users\%Name1%\Music\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\%Name1%\Music\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790>> %CD%\Users\%Name1%\Music\desktop.ini
@echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12689>> %CD%\Users\%Name1%\Music\desktop.ini
@echo IconResource=%SystemRoot%\system32\imageres.dll,-108>> %CD%\Users\%Name1%\Music\desktop.ini
@echo [ViewState]>> %CD%\Users\%Name1%\Music\desktop.ini
@echo Mode=>> %CD%\Users\%Name1%\Music\desktop.ini
@echo Vid=>> %CD%\Users\%Name1%\Music\desktop.ini
@echo FolderType=Music>> %CD%\Users\%Name1%\Music\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\%Name1%\Music\desktop.ini
attrib +r %CD%\Users\%Name1%\Music
mkdir %CD%\Users\%Name1%\Pictures
rem создание файла %CD%\Users\%Name1%\Pictures\desktop.ini
@echo.> %CD%\Users\%Name1%\Pictures\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\%Name1%\Pictures\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779>> %CD%\Users\%Name1%\Pictures\desktop.ini
@echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12688>> %CD%\Users\%Name1%\Pictures\desktop.ini
@echo IconResource=%SystemRoot%\system32\imageres.dll,-113>> %CD%\Users\%Name1%\Pictures\desktop.ini
@echo [ViewState]>> %CD%\Users\%Name1%\Pictures\desktop.ini
@echo Mode=>> %CD%\Users\%Name1%\Pictures\desktop.ini
@echo Vid=>> %CD%\Users\%Name1%\Pictures\desktop.ini
@echo FolderType=Pictures>> %CD%\Users\%Name1%\Pictures\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\%Name1%\Pictures\desktop.ini
attrib +r %CD%\Users\%Name1%\Pictures
mkdir %CD%\Users\%Name1%\Videos
rem создание файла %CD%\Users\%Name1%\Videos\desktop.ini
@echo.> %CD%\Users\%Name1%\Videos\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\%Name1%\Videos\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21791>> %CD%\Users\%Name1%\Videos\desktop.ini
@echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12690>> %CD%\Users\%Name1%\Videos\desktop.ini
@echo IconResource=%SystemRoot%\system32\imageres.dll,-189>> %CD%\Users\%Name1%\Videos\desktop.ini
@echo [ViewState]>> %CD%\Users\%Name1%\Videos\desktop.ini
@echo Mode=>> %CD%\Users\%Name1%\Videos\desktop.ini
@echo Vid=>> %CD%\Users\%Name1%\Videos\desktop.ini
@echo FolderType=Videos>> %CD%\Users\%Name1%\Videos\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Users\%Name1%\Videos\desktop.ini
attrib +r %CD%\Users\%Name1%\Videos
echo DONE
rem создание дополнительных папок
mkdir %CD%\Documents
rem создание файла %CD%\Documents\desktop.ini
@echo.> %CD%\Documents\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Documents\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770>> %CD%\Documents\desktop.ini
@echo [ViewState]>> %CD%\Documents\desktop.ini
@echo Mode=>> %CD%\Documents\desktop.ini
@echo Vid=>> %CD%\Documents\desktop.ini
@echo FolderType=Documents>> %CD%\Documents\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Documents\desktop.ini
attrib +r %CD%\Documents
mkdir %CD%\Downloads
rem создание файла %CD%\Downloads\desktop.ini
@echo.> %CD%\Downloads\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Downloads\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798>> %CD%\Downloads\desktop.ini
@echo [ViewState]>> %CD%\Downloads\desktop.ini
@echo Mode=>> %CD%\Downloads\desktop.ini
@echo Vid=>> %CD%\Downloads\desktop.ini
@echo FolderType=Generic>> %CD%\Downloads\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Downloads\desktop.ini
attrib +r %CD%\Downloads
mkdir %CD%\Favorites
rem создание файла %CD%\Favorites\desktop.ini
@echo.> %CD%\Favorites\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Favorites\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21796>> %CD%\Favorites\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Favorites\desktop.ini
attrib +r %CD%\Favorites
mkdir %CD%\Music
rem создание файла %CD%\Music\desktop.ini
@echo.> %CD%\Music\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Music\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790>> %CD%\Music\desktop.ini
@echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12689>> %CD%\Music\desktop.ini
@echo [ViewState]>> %CD%\Music\desktop.ini
@echo Mode=>> %CD%\Music\desktop.ini
@echo Vid=>> %CD%\Music\desktop.ini
@echo FolderType=Music>> %CD%\Music\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Music\desktop.ini
attrib +r %CD%\Music
mkdir %CD%\Pictures
rem создание файла Pictures\desktop.ini
@echo.> %CD%\Pictures\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Pictures\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779>> %CD%\Pictures\desktop.ini
@echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12688>> %CD%\Pictures\desktop.ini
@echo [ViewState]>> %CD%\Pictures\desktop.ini
@echo Mode=>> %CD%\Pictures\desktop.ini
@echo Vid=>> %CD%\Pictures\desktop.ini
@echo FolderType=Pictures>> %CD%\Pictures\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Pictures\desktop.ini
attrib +r %CD%\Pictures
mkdir %CD%\Videos
rem создание файла %CD%\Videos\desktop.ini
@echo.> %CD%\Videos\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Videos\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21791>> %CD%\Videos\desktop.ini
@echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12690>> %CD%\Videos\desktop.ini
@echo [ViewState]>> %CD%\Videos\desktop.ini
@echo Mode=>> %CD%\Videos\desktop.ini
@echo Vid=>> %CD%\Videos\desktop.ini
@echo FolderType=Videos>> %CD%\Videos\desktop.ini
rem применение атрибутов к файлу и папке
attrib +s +h %CD%\Videos\desktop.ini
attrib +r %CD%\Videos

rem создание символьных ссылок (связей) из общей папки в дополнительных папках и установка прав доступа NTFS к этим ссылкам
mklink /j "%CD%\Documents\Общие документы" "%CD%\Users\Public\Documents"
icacls "%CD%\Documents\Общие документы" /inheritance:r
icacls "%CD%\Documents\Общие документы" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Documents\Общие документы" /grant Администраторы:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Documents\Общие документы" /grant Пользователи:RX /T /C /L /Q
icacls "%CD%\Documents\Общие документы" /grant Все:RX /T /C /L /Q
mklink /j "%CD%\Downloads\Общие загруженные файлы" "%CD%\Users\Public\Downloads"
icacls "%CD%\Downloads\Общие загруженные файлы" /inheritance:r
icacls "%CD%\Downloads\Общие загруженные файлы" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Downloads\Общие загруженные файлы" /grant Администраторы:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Downloads\Общие загруженные файлы" /grant Пользователи:RX /T /C /L /Q
icacls "%CD%\Downloads\Общие загруженные файлы" /grant Все:RX /T /C /L /Q
mklink /j "%CD%\Music\Общая музыка" "%CD%\Users\Public\Music"
icacls "%CD%\Music\Общая музыка" /inheritance:r
icacls "%CD%\Music\Общая музыка" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Music\Общая музыка" /grant Администраторы:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Music\Общая музыка" /grant Пользователи:RX /T /C /L /Q
icacls "%CD%\Music\Общая музыка" /grant Все:RX /T /C /L /Q
mklink /j "%CD%\Pictures\Общие изображения" "%CD%\Users\Public\Pictures"
icacls "%CD%\Pictures\Общие изображения" /inheritance:r
icacls "%CD%\Pictures\Общие изображения" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Pictures\Общие изображения" /grant Администраторы:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Pictures\Общие изображения" /grant Пользователи:RX /T /C /L /Q
icacls "%CD%\Pictures\Общие изображения" /grant Все:RX /T /C /L /Q
mklink /j "%CD%\Videos\Общие видео" "%CD%\Users\Public\Videos"
icacls "%CD%\Videos\Общие видео" /inheritance:r
icacls "%CD%\Videos\Общие видео" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Videos\Общие видео" /grant Администраторы:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Videos\Общие видео" /grant Пользователи:RX /T /C /L /Q
icacls "%CD%\Videos\Общие видео" /grant Все:RX /T /C /L /Q

rem создание символьных ссылок (связей) из %Name1% в дополнительных папках и установка прав доступа NTFS к этим ссылкам
mklink /j "%CD%\Documents\Документы - %Name1%" "%CD%\Users\%Name1%\Documents"
icacls "%CD%\Documents\Документы - %Name1%" /inheritance:r
icacls "%CD%\Documents\Документы - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
mklink /j "%CD%\Downloads\Загрузки - %Name1%" "%CD%\Users\%Name1%\Downloads"
icacls "%CD%\Downloads\Загрузки - %Name1%" /inheritance:r
icacls "%CD%\Downloads\Загрузки - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
mklink /j "%CD%\Favorites\Избранное - %Name1%" "%CD%\Users\%Name1%\Favorites"
icacls "%CD%\Favorites\Избранное - %Name1%" /inheritance:r
icacls "%CD%\Favorites\Избранное - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
mklink /j "%CD%\Music\Музыка - %Name1%" "%CD%\Users\%Name1%\Music"
icacls "%CD%\Music\Музыка - %Name1%" /inheritance:r
icacls "%CD%\Music\Музыка - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
mklink /j "%CD%\Pictures\Изображения - %Name1%" "%CD%\Users\%Name1%\Pictures"
icacls "%CD%\Pictures\Изображения - %Name1%" /inheritance:r
icacls "%CD%\Pictures\Изображения - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
mklink /j "%CD%\Videos\Видео - %Name1%" "%CD%\Users\%Name1%\Videos"
icacls "%CD%\Videos\Видео - %Name1%" /inheritance:r
icacls "%CD%\Videos\Видео - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q

rem удалить лишние права
rem icacls %CD%\Users\Public /remove:g *%Sid1%
rem icacls %CD%\Users /remove:g *%Sid1%
rem icacls "Documents\Общие документы" /remove:g *%Sid1% /L
rem icacls "Downloads\Общие загруженные файлы" /remove:g *%Sid1% /L
rem icacls "Music\Общая музыка" /remove:g *%Sid1% /L
rem icacls "Pictures\Общие изображения" /remove:g *%Sid1% /L
rem icacls "Videos\Общие видео" /remove:g *%Sid1% /L
rem icacls .\ /remove:g *%Sid1%

goto exit

:er1_Users
echo Папка %CD%\Users уже существует, папка пропущена
goto createpublic

:er1_public
echo Папка %CD%\Users уже существует, папка пропущена
goto createname1

:er1_name1
echo Папка %CD%\Users\%Name1% уже существует, папка пропущена
goto exit

:exit
pause

Georgio
08-11-2014, 00:53
При запуске готового батника от имени администратора (правой кнопкой мыши по файлу) все операции проводятся не с текущей папкой а с папкой системы C:\Windows\system32 »


Чтобы пакетный файл, запущенный от имени администратора, работал в директории, в которой находится сам, нужно в его начале (сразу после "@echo off") вставить строку cd /d "%~dp0".

Friek
08-11-2014, 08:11
cd /d "%~dp0" »
Спасибо, это работает, но теперь не создаются файлы и папки, где нужны права доступа, конкретного пользователя, наверное, придется сначала давать на все файлы/папки права администратора, потом их отзывать
А можно как нибудь упростить мой код, например раздавать права по условию всем файлам/папкам рекурсивно и без наследства?

Friek
08-11-2014, 08:44
rem создание файла %CD%\Users\%Name1%\Documents\desktop.ini
@echo.> %CD%\Users\%Name1%\Documents\desktop.ini
@echo [.ShellClassInfo]>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo IconResource=%SystemRoot%\system32\imageres.dll,-112>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo [ViewState]>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo Mode=>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo Vid=>> %CD%\Users\%Name1%\Documents\desktop.ini
@echo FolderType=Documents>> %CD%\Users\%Name1%\Documents\desktop.ini

заменяю на:

rem создание файла %CD%\Users\%Name1%\Documents\desktop.ini
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770
echo IconResource=%SystemRoot%\system32\imageres.dll,-112
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Documents
)> %CD%\Users\%Name1%\Documents\desktop.ini

Это правильно будет же? Хочу немного упростить все. Это будет так называемая версия 2 скрипта )

Georgio
08-11-2014, 13:20
А можно как нибудь упростить мой код, например раздавать права по условию всем файлам/папкам рекурсивно и без наследства? »


icacls "%cd%\*" /grant:r ... /c /l /q /t




Это правильно будет же? Хочу немного упростить все. Это будет так называемая версия 2 скрипта ) »


Friek, конечно, это будет правильно, а вот в третьей версии пакетного файла нужно будет использовать циклы с оператором "for", что сократит код ещё в несколько раз.

Friek
08-11-2014, 15:13
Friek, конечно, это будет правильно, а вот в третьей версии пакетного файла нужно будет использовать циклы с оператором "for", что сократит код ещё в несколько раз. »
Хочу до этого тоже дойти, а то из всех моих больших задуманных проектов ни один не дописал

Friek
08-11-2014, 16:39
Готовая вторая версия выглядит так

@echo off
cd /d "%~dp0"

rem создание переменных
set Sid1=мой Sid
set Name1=Моё имя пользователя

rem установка прав доступа NTFS на корневую папку
icacls "%CD%" /inheritance:r
icacls "%CD%" /grant *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%" /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%" /grant Пользователи:(OI)(CI)RX /T /C /L /Q
icacls "%CD%" /grant Все:(OI)(CI)RX /T /C /L /Q

rem создание папки Users
mkdir "%CD%\Users"
rem Установка прав доступа NTFS для папки "%CD%\Users"
icacls "%CD%\Users" /inheritance:r
icacls "%CD%\Users" /grant *%Sid1%:(OI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Users" /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Users" /grant Пользователи:(OI)(CI)RX /T /C /L /Q
icacls "%CD%\Users" /grant Все:(OI)(CI)RX /T /C /L /Q
rem создание файла desktop.ini для папки Users
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21813
)> "%CD%\Users\desktop.ini"
rem установка атрибутов к файлу desktop.ini в папке Users
attrib +s +h "%CD%\Users\desktop.ini"
attrib +r "%CD%\Users"

rem создание папки %Name1% в папке "%CD%\Users"
mkdir "%CD%\Users\%Name1%"
rem Установка прав доступа NTFS для папки %Name1% из папки Users
icacls "%CD%\Users\%Name1%" /inheritance:r
icacls "%CD%\Users\%Name1%" /grant *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
rem создание папок пользователя %Name1% в папке "%CD%/Users"
mkdir "%CD%\Users\%Name1%\Documents"
mkdir "%CD%\Users\%Name1%\Downloads"
mkdir "%CD%\Users\%Name1%\Favorites"
mkdir "%CD%\Users\%Name1%\Music"
mkdir "%CD%\Users\%Name1%\Pictures"
mkdir "%CD%\Users\%Name1%\Videos"
echo папки пользователя %Name1% созданы
rem создание файлов desktop.ini для пользовательской папки %Name1%
rem создание файла "%CD%\Users\%Name1%\Documents\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770
echo IconResource=%SystemRoot%\system32\imageres.dll,-112
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Documents
)> "%CD%\Users\%Name1%\Documents\desktop.ini"
rem создание файла "%CD%\Users\%Name1%\Downloads\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798
echo IconResource=%SystemRoot%\system32\imageres.dll,-184
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Generic
)> "%CD%\Users\%Name1%\Downloads\desktop.ini"
rem создание файла "%CD%\Users\%Name1%\Favorites\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21796
echo IconResource=%SystemRoot%\system32\imageres.dll,-115
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=
)> "%CD%\Users\%Name1%\Favorites\desktop.ini"
rem создание файла "%CD%\Users\%Name1%\Music\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
echo IconResource=%SystemRoot%\system32\imageres.dll,-108
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Music
)> "%CD%\Users\%Name1%\Music\desktop.ini"
rem создание файла "%CD%\Users\%Name1%\Pictures\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
echo IconResource=%SystemRoot%\system32\imageres.dll,-113
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Pictures
)> "%CD%\Users\%Name1%\Pictures\desktop.ini"
rem создание файла "%CD%\Users\%Name1%\Videos\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21791
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12690
echo IconResource=%SystemRoot%\system32\imageres.dll,-189
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Videos
)> "%CD%\Users\%Name1%\Videos\desktop.ini"
rem установка атрибутов к файлам desktop.ini и к их дочерним папкам
attrib +s +h "%CD%\Users\%Name1%\Documents\desktop.ini"
attrib +r "%CD%\Users\%Name1%\Documents"
attrib +s +h "%CD%\Users\%Name1%\Downloads\desktop.ini"
attrib +r "%CD%\Users\%Name1%\Downloads"
attrib +s +h "%CD%\Users\%Name1%\Favorites\desktop.ini"
attrib +r "%CD%\Users\%Name1%\Favorites"
attrib +s +h "%CD%\Users\%Name1%\Music\desktop.ini"
attrib +r "%CD%\Users\%Name1%\Music"
attrib +s +h "%CD%\Users\%Name1%\Pictures\desktop.ini"
attrib +r "%CD%\Users\%Name1%\Pictures"
attrib +s +h "%CD%\Users\%Name1%\Videos\desktop.ini"
attrib +r "%CD%\Users\%Name1%\Videos"

rem создание папки Public в папке "%CD%\Users"
mkdir "%CD%\Users\Public"
rem Установка прав доступа NTFS для папки Public из папки Users
icacls "%CD%\Users\Public" /inheritance:r
icacls "%CD%\Users\Public" /grant *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Users\Public" /grant Администраторы:RX /T /C /L /Q
icacls "%CD%\Users\Public" /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Users\Public" /grant Пользователи:(OI)(CI)RX /T /C /L /Q
icacls "%CD%\Users\Public" /grant "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /T /C /L /Q
rem создание файла desktop.ini для папки Public
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21816
)> "%CD%\Users\Public\desktop.ini"
rem установка атрибутов к файлу desktop.ini в папке Users
attrib +s +h "%CD%\Users\Public\desktop.ini"
attrib +r "%CD%\Users\Public"
rem создание общих папок в папке "%CD%\Users\Public"
mkdir "%CD%\Users\Public\Documents"
mkdir "%CD%\Users\Public\Downloads"
mkdir "%CD%\Users\Public\Music"
mkdir "%CD%\Users\Public\Pictures"
mkdir "%CD%\Users\Public\Videos"
echo общие папки в "%CD%\Users\Public" созданы
rem создание файлов desktop.ini для общих папок в папке "%CD\Users"
rem создание файла "%CD%\Users\Public\Documents\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21801
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Documents
)> "%CD%\Users\Public\Documents\desktop.ini"
rem создание файла "%CD%\Users\Public\Downloads\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21808
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Generic
)> "%CD%\Users\Public\Downloads\desktop.ini"
rem создание файла "%CD%\Users\Public\Music\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21803
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Music
)> "%CD%\Users\Public\Music\desktop.ini"
rem создание файла "%CD%\Users\Public\Pictures\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21802
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Pictures
)> "%CD%\Users\Public\Pictures\desktop.ini"
rem создание файла "%CD%\Users\Public\Videos\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21804
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12690
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Videos
)> "%CD%\Users\Public\Videos\desktop.ini"
rem установка атрибутов к файлам desktop.ini и к их дочерним папкам
attrib +s +h "%CD%\Users\Public\Documents\desktop.ini"
attrib +r "%CD%\Users\Public\Documents"
attrib +s +h "%CD%\Users\Public\Downloads\desktop.ini"
attrib +r "%CD%\Users\Public\Downloads"
attrib +s +h "%CD%\Users\Public\Music\desktop.ini"
attrib +r "%CD%\Users\Public\Music"
attrib +s +h "%CD%\Users\Public\Pictures\desktop.ini"
attrib +r "%CD%\Users\Public\Pictures"
attrib +s +h "%CD%\Users\Public\Videos\desktop.ini"
attrib +r "%CD%\Users\Public\Videos"

rem создание дополнительных папок в корневой папке "%CD%"
mkdir "%CD%\Documents"
mkdir "%CD%\Downloads"
mkdir "%CD%\Favorites"
mkdir "%CD%\Music"
mkdir "%CD%\Pictures"
mkdir "%CD%\Videos"
echo дополнительные папки в корневой папке "%CD%" созданы
rem создание файлов desktop.ini для дополнительных папок в папке "%CD%"
rem создание файла "%CD%\Documents\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770
echo IconResource=%SystemRoot%\system32\imageres.dll,-112
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Documents
)> "%CD%\Documents\desktop.ini"
rem создание файла "%CD%\Downloads\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798
echo IconResource=%SystemRoot%\system32\imageres.dll,-184
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Generic
)> "%CD%\Downloads\desktop.ini"
rem создание файла "%CD%\Favorites\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21796
echo IconResource=%SystemRoot%\system32\imageres.dll,-115
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=
)> "%CD%\Favorites\desktop.ini"
rem создание файла "%CD%\Music\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
echo IconResource=%SystemRoot%\system32\imageres.dll,-108
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Music
)> "%CD%\Music\desktop.ini"
rem создание файла "%CD%\Pictures\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
echo IconResource=%SystemRoot%\system32\imageres.dll,-113
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Pictures
)> "%CD%\Pictures\desktop.ini"
rem создание файла "%CD%\Videos\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21791
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12690
echo IconResource=%SystemRoot%\system32\imageres.dll,-189
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Videos
)> "%CD%\Videos\desktop.ini"
rem установка атрибутов к файлам desktop.ini и к их дочерним папкам
attrib +s +h "%CD%\Documents\desktop.ini"
attrib +r "%CD%\Documents"
attrib +s +h "%CD%\Downloads\desktop.ini"
attrib +r "%CD%\Downloads"
attrib +s +h "%CD%\Favorites\desktop.ini"
attrib +r "%CD%\Favorites"
attrib +s +h "%CD%\Music\desktop.ini"
attrib +r "%CD%\Music"
attrib +s +h "%CD%\Pictures\desktop.ini"
attrib +r "%CD%\Pictures"
attrib +s +h "%CD%\Videos\desktop.ini"
attrib +r "%CD%\Videos"

rem создание символьных ссылок (связей) из %Name1% в дополнительных папках
mklink /j "%CD%\Documents\Документы - %Name1%" "%CD%\Users\%Name1%\Documents"
mklink /j "%CD%\Downloads\Загрузки - %Name1%" "%CD%\Users\%Name1%\Downloads"
mklink /j "%CD%\Favorites\Избранное - %Name1%" "%CD%\Users\%Name1%\Favorites"
mklink /j "%CD%\Music\Музыка - %Name1%" "%CD%\Users\%Name1%\Music"
mklink /j "%CD%\Pictures\Изображения - %Name1%" "%CD%\Users\%Name1%\Pictures"
mklink /j "%CD%\Videos\Видео - %Name1%" "%CD%\Users\%Name1%\Videos"
rem создание символьных ссылок (связей) из общей папки в дополнительных папках
mklink /j "%CD%\Documents\Общие документы" "%CD%\Users\Public\Documents"
mklink /j "%CD%\Downloads\Общие загруженные файлы" "%CD%\Users\Public\Downloads"
mklink /j "%CD%\Music\Общая музыка" "%CD%\Users\Public\Music"
mklink /j "%CD%\Pictures\Общие изображения" "%CD%\Users\Public\Pictures"
mklink /j "%CD%\Videos\Общие видео" "%CD%\Users\Public\Videos"

rem установка прав доступа NTFS к символьным ссылкам (связям) из %Name1% в дополнительных папках
icacls "%CD%\Documents\Документы - %Name1%" /inheritance:r
icacls "%CD%\Documents\Документы - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Downloads\Загрузки - %Name1%" /inheritance:r
icacls "%CD%\Downloads\Загрузки - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Favorites\Избранное - %Name1%" /inheritance:r
icacls "%CD%\Favorites\Избранное - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Music\Музыка - %Name1%" /inheritance:r
icacls "%CD%\Music\Музыка - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Pictures\Изображения - %Name1%" /inheritance:r
icacls "%CD%\Pictures\Изображения - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Videos\Видео - %Name1%" /inheritance:r
icacls "%CD%\Videos\Видео - %Name1%" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q

rem установка прав доступа NTFS к символьным ссылкам (связям) из общей папки в дополнительных папках
icacls "%CD%\Documents\Общие документы" /inheritance:r
icacls "%CD%\Documents\Общие документы" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Documents\Общие документы" /grant Администраторы:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Documents\Общие документы" /grant Пользователи:RX /T /C /L /Q
icacls "%CD%\Documents\Общие документы" /grant Все:RX /T /C /L /Q
icacls "%CD%\Downloads\Общие загруженные файлы" /inheritance:r
icacls "%CD%\Downloads\Общие загруженные файлы" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Downloads\Общие загруженные файлы" /grant Администраторы:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Downloads\Общие загруженные файлы" /grant Пользователи:RX /T /C /L /Q
icacls "%CD%\Downloads\Общие загруженные файлы" /grant Все:RX /T /C /L /Q
icacls "%CD%\Music\Общая музыка" /inheritance:r
icacls "%CD%\Music\Общая музыка" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Music\Общая музыка" /grant Администраторы:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Music\Общая музыка" /grant Пользователи:RX /T /C /L /Q
icacls "%CD%\Music\Общая музыка" /grant Все:RX /T /C /L /Q
icacls "%CD%\Pictures\Общие изображения" /inheritance:r
icacls "%CD%\Pictures\Общие изображения" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Pictures\Общие изображения" /grant Администраторы:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Pictures\Общие изображения" /grant Пользователи:RX /T /C /L /Q
icacls "%CD%\Pictures\Общие изображения" /grant Все:RX /T /C /L /Q
icacls "%CD%\Videos\Общие видео" /inheritance:r
icacls "%CD%\Videos\Общие видео" /grant *%Sid1%:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Videos\Общие видео" /grant Администраторы:(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%\Videos\Общие видео" /grant Пользователи:RX /T /C /L /Q
icacls "%CD%\Videos\Общие видео" /grant Все:RX /T /C /L /Q

rem удалить лишние права
rem icacls %CD%\Users\Public /remove:g *%Sid1%
rem icacls %CD%\Users /remove:g *%Sid1%
rem icacls "Documents\Общие документы" /remove:g *%Sid1% /L
rem icacls "Downloads\Общие загруженные файлы" /remove:g *%Sid1% /L
rem icacls "Music\Общая музыка" /remove:g *%Sid1% /L
rem icacls "Pictures\Общие изображения" /remove:g *%Sid1% /L
rem icacls "Videos\Общие видео" /remove:g *%Sid1% /L
rem icacls "%CD%" /remove:g *%Sid1%

:exit
pause

Продолжу сжимать код, надо посмотреть, что там команда for делает

Iska
08-11-2014, 18:30
Продолжу сжимать код, надо посмотреть, что там команда for делает »
Например однотипное:
mkdir "%CD%\Documents"
mkdir "%CD%\Downloads"
mkdir "%CD%\Favorites"
mkdir "%CD%\Music"
mkdir "%CD%\Pictures"
mkdir "%CD%\Videos" »
меняется на:
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
mkdir "%CD%\%%~i"
)

А такое:
attrib +s +h "%CD%\Users\Public\Documents\desktop.ini"
attrib +r "%CD%\Users\Public\Documents"
attrib +s +h "%CD%\Users\Public\Downloads\desktop.ini"
attrib +r "%CD%\Users\Public\Downloads"
attrib +s +h "%CD%\Users\Public\Music\desktop.ini"
attrib +r "%CD%\Users\Public\Music"
attrib +s +h "%CD%\Users\Public\Pictures\desktop.ini"
attrib +r "%CD%\Users\Public\Pictures"
attrib +s +h "%CD%\Users\Public\Videos\desktop.ini"
attrib +r "%CD%\Users\Public\Videos"
»
на:
set sRootPath=%CD%\Users\Public

for %%i in ("Documents" "Downloads" "Music" "Pictures" "Videos") do (
attrib.exe +s +h "%sRootPath%\%%~i\desktop.ini"
attrib.exe +r "%sRootPath%\%%~i"
)


Кстати, а где в последнем «Favorites» ;)?! А то можно было бы во всех:
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do …
заменить на однократное:
set sFolders="Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos"
и по месту:
for %%i in (%sFolders%) do …
Естественно, и более крупные куски однотипного вида, наподобие:
rem создание файла "%CD%\Downloads\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798
echo IconResource=%SystemRoot%\system32\imageres.dll,-184
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Generic
)> "%CD%\Downloads\desktop.ini"

подлежат подобной же нормализации.

Friek
08-11-2014, 18:48
Спасибо, изменю это.

Кстати, а где в последнем «Favorites» ?! А то можно было бы во всех: »

в папке Public по умолчанию на windows 7 папка Favorites скрытая, и у нее нет внутри файла desktop.ini

rem создание файла "%CD%\Downloads\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798
echo IconResource=%SystemRoot%\system32\imageres.dll,-184
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Generic
)> "%CD%\Downloads\desktop.ini" »

у всех папок разные строчные параметры LocalizedResourceName и IconResource

Iska
08-11-2014, 19:28
у всех папок разные строчные параметры LocalizedResourceName и IconResource »
Для подобных вещей можно использовать процедуру:
@echo off
setlocal enableextensions enabledelayedexpansion

set Name1=SomeUser

call :CreateDesktopIni "%Name1%" "Documents" "-21770" "" "-112" "Documents"
call :CreateDesktopIni "%Name1%" "Downloads" "-21798" "" "-184" "Generic"
call :CreateDesktopIni "%Name1%" "Favorites" "-21796" "" "-115" ""
call :CreateDesktopIni "%Name1%" "Music" "-21790" "-12689" "-108" "Music"
call :CreateDesktopIni "%Name1%" "Pictures" "-21779" "-12688" "-113" "Pictures"
call :CreateDesktopIni "%Name1%" "Videos" "-21791" "-12690" "-189" "Videos"

endlocal
exit /b 0

:CreateDesktopIni
set sUser=%~1
set sFolder=%~2
set sLocalizedResourceNameNumber=%~3
set sInfoTipNumber=%~4
set sIconResourceNumber=%~5
set sFolderType=%~6

if defined sUser (
>"%CD%\Users\%sUser%\%sFolder%\desktop.ini" (
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,%sLocalizedResourceNameNumber%
if defined sInfoTipNumber echo InfoTip=@%SystemRoot%\system32\shell32.dll,%sInfoTipNumber%
echo IconResource=%SystemRoot%\system32\imageres.dll,%sIconResourceNumber%
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=%sFolderType%
)
)
exit /b 0

Friek
08-11-2014, 19:35
Но это для меня еще сложно :D, буду разбираться

Iska
08-11-2014, 19:38
Friek, ничего страшного, пробуйте. Не боги горшки обжигают. Всё придёт со временем.

Суть в том, что переход от линейной «простыни» к структурному коду делает последний нагляднее и понятнее.

Friek
08-11-2014, 19:53
Iska, я так понял, код:
[code]
@echo off
setlocal enableextensions enabledelayedexpansion

set Name1=SomeUser

call :CreateDesktopIni "%Name1%" "Documents" "-21770" "" "-112" "Documents"
call :CreateDesktopIni "%Name1%" "Downloads" "-21798" "" "-184" "Generic"
call :CreateDesktopIni "%Name1%" "Favorites" "-21796" "" "-115" ""
call :CreateDesktopIni "%Name1%" "Music" "-21790" "-12689" "-108" "Music"
call :CreateDesktopIni "%Name1%" "Pictures" "-21779" "-12688" "-113" "Pictures"
call :CreateDesktopIni "%Name1%" "Videos" "-21791" "-12690" "-189" "Videos"

endlocal
exit /b 0

:CreateDesktopIni
set sUser=%~1
set sFolder=%~2
set sLocalizedResourceNameNumber=%~3
set sInfoTipNumber=%~4
set sIconResourceNumber=%~5
set sFolderType=%~6

if defined sUser (
>"%CD%\Users\%sUser%\%sFolder%\desktop.ini" (
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,%sLocalizedResourceNameNumber%
if defined sInfoTipNumber echo InfoTip=@%SystemRoot%\system32\shell32.dll,%sInfoTipNumber%
echo IconResource=%SystemRoot%\system32\imageres.dll,%sIconResourceNumber%
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=%sFolderType%
)
)
exit /b 0
[\code]
используется только для пользователя %name1%, а для Public папки нужно его дублировать?

Iska
08-11-2014, 20:03
Friek, возможно. Я не вникал в Ваш код в деталях. Это просто образцы — как можно сделать, не следуйте им слепо.

Friek
08-11-2014, 21:04
Простите, возник вопрос...
С при использовании cd /d "%~dp0" в начале скрипта использование переменной %CD% отпадает? Или она обязательна?

Friek
08-11-2014, 23:27
Например если я батник кладу в корень флешки то часть кода, а именно:


rem установка прав доступа NTFS на корневую папку
icacls "%CD%" /inheritance:r
icacls "%CD%" /grant *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%" /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls "%CD%" /grant Пользователи:(OI)(CI)RX /T /C /L /Q
icacls "%CD%" /grant Все:(OI)(CI)RX /T /C /L /Q


а код, немного переделанный вот так:


rem установка прав доступа NTFS на корневую папку
icacls ./ /inheritance:r
icacls ./ /grant *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls ./ /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls ./ /grant Пользователи:(OI)(CI)RX /T /C /L /Q
icacls ./ /grant Все:(OI)(CI)RX /T /C /L /Q

вроде бы работает нормально, но правильно ли это?

Friek
09-11-2014, 00:02
set sRootPath=%CD%\Users\Public
for %%i in ("Documents" "Downloads" "Music" "Pictures" "Videos") do (
attrib.exe +s +h "%sRootPath%\%%~i\desktop.ini"
attrib.exe +r "%sRootPath%\%%~i"
)

»

attrib.exe обязательно с .exe? без неё вроде бы работает, или могут быть проблемы?

Georgio
09-11-2014, 00:34
код, немного переделанный вот так:
rem установка прав доступа NTFS на корневую папку
icacls ./ /inheritance:r
icacls ./ /grant *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls ./ /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) /T /C /L /Q
icacls ./ /grant Пользователи:(OI)(CI)RX /T /C /L /Q
icacls ./ /grant Все:(OI)(CI)RX /T /C /L /Q
вроде бы работает нормально, но правильно ли это? »


Если и работает, то Вам повезло с командой "ICACLS". Если уж ставить слеш после точки, то обратный ("\"), но в данном случае он излишен.

Вот так короче:

icacls . /inheritance:r /c /l /q /t
icacls . /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /c /l /q /t

.

Iska
09-11-2014, 00:48
attrib.exe обязательно с .exe? без неё вроде бы работает, или могут быть проблемы? »
Желательно.

Friek
09-11-2014, 10:05
Если и работает, то Вам повезло с командой "ICACLS". Если уж ставить слеш после точки, то обратный ("\"), но в данном случае он излишен. »
Странно, действительно работает, я вроде бы первый раз тоже только точки делал, но ошибки были, что путь не найден, а сейчас работает

icacls . /inheritance:r /c /l /q /t
icacls . /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /c /l /q /t »
Тоже работает )




© OSzone.net 2001-2012