Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Автоматизация создания папок и раздача прав доступа NTFS (http://forum.oszone.net/showthread.php?t=290614)

Friek 08-11-2014 00:07 2426327

Автоматизация создания папок и раздача прав доступа NTFS
 
Всем добрый вечер. Есть необходимость создать на нескольких флешках и жестких дисках одинаковые папки с одинаковыми правами.
Для этого я попытался написать скрипт, и вроде написал. Он работает, но я столкнулся с некоторыми для меня трудностями.
При запуске готового батника от имени администратора (правой кнопкой мыши по файлу) все операции проводятся не с текущей папкой а с папкой системы 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 2426339

Цитата:

Цитата Friek
При запуске готового батника от имени администратора (правой кнопкой мыши по файлу) все операции проводятся не с текущей папкой а с папкой системы C:\Windows\system32 »


Чтобы пакетный файл, запущенный от имени администратора, работал в директории, в которой находится сам, нужно в его начале (сразу после "@echo off") вставить строку
Код:

cd /d "%~dp0"
.

Friek 08-11-2014 08:11 2426381

Цитата:

Цитата Georgio
Код:

cd /d "%~dp0"
»

Спасибо, это работает, но теперь не создаются файлы и папки, где нужны права доступа, конкретного пользователя, наверное, придется сначала давать на все файлы/папки права администратора, потом их отзывать
А можно как нибудь упростить мой код, например раздавать права по условию всем файлам/папкам рекурсивно и без наследства?

Friek 08-11-2014 08:44 2426384

Код:

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 2426462

Цитата:

Цитата Friek
А можно как нибудь упростить мой код, например раздавать права по условию всем файлам/папкам рекурсивно и без наследства? »


Код:

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



Цитата:

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


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

Friek 08-11-2014 15:13 2426492

Цитата:

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

Хочу до этого тоже дойти, а то из всех моих больших задуманных проектов ни один не дописал

Friek 08-11-2014 16:39 2426524

Готовая вторая версия выглядит так
Код:

@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 2426574

Цитата:

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

Например однотипное:
Цитата:

Цитата Friek
Код:

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"
)

А такое:
Цитата:

Цитата Friek
Код:

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 2426581

Спасибо, изменю это.

Цитата:

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

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

Цитата:

Цитата Iska
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 2426601

Цитата:

Цитата Friek
у всех папок разные строчные параметры 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 2426605

Но это для меня еще сложно :D, буду разбираться

Iska 08-11-2014 19:38 2426606

Friek, ничего страшного, пробуйте. Не боги горшки обжигают. Всё придёт со временем.

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

Friek 08-11-2014 19:53 2426611

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 2426613

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

Friek 08-11-2014 21:04 2426634

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

Friek 08-11-2014 23:27 2426717

Например если я батник кладу в корень флешки то часть кода, а именно:

Код:

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 2426736

Цитата:

Цитата Iska
Код:

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 2426756

Цитата:

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

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 2426765

Цитата:

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

Желательно.

Friek 09-11-2014 10:05 2426817

Цитата:

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

Странно, действительно работает, я вроде бы первый раз тоже только точки делал, но ошибки были, что путь не найден, а сейчас работает

Цитата:

Цитата Georgio
Код:

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 »


Тоже работает )

Friek 09-11-2014 20:47 2427090

icacls тоже как icacls.exe писать?

Iska 09-11-2014 21:23 2427101

Friek, расширение файла желательно указывать всегда. Любые умолчания — зло.

Friek 19-01-2015 18:36 2458464

Долго не работал над скриптом, был в командировке.
Сегодня посидел над ним, и понял, что долго допускал очень важную ошибку с правами доступа.
Код:

icacls.exe . /inheritance:r /T /C /L /Q
icacls/exe . /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /T /C /L /Q

обязательно надо поменять местами команды:
Код:

icacls.exe . /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /T /C /L /Q
icacls.exe . /inheritance:r /T /C /L /Q

иначе я сначала сам себе запрещаю доступ к папке (папкам и файлам), убирая наследие прав от корневой папки, а потом пытаюсь подставить свои.
Вторая ошибка, это рекурсивное подставление прав: /T - операция выполняется для всех соответствующих файлов и каталогов, расположенных в указанных в имени каталогах.
Этот ключ, как оказалось, мне совсем не нужен, убрав его я смог сгруппировать раздачу NTFS прав к папкам и файлам в отдельный блок скрипта. Возможно это встанет боком, но вроде пока нормально.
В итоге получается, что надо вот так:
Код:

icacls.exe . /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /T /C /L /Q
icacls.exe . /inheritance:r /C /L /Q

В некоторых строках, где явно нету символьных ссылок, и связей, я еще убрал ключ /L
В итоге у меня пока есть вот такая версия 3
Код:

@echo off
:start
::командный файл будет запущен в каталоге, где лежит, даже от имени администратора
cd /d "%~dp0"

::создание начальных переменных
::SSID моего пользователя
set Sid1=мой SID
::имя моего пользователя, имя будующей папки
set Name1=имя моего пользователя
::переменная для работы непосредственно с папкой имя которой указано в переменной Name1
set FolderName1=%CD%\Users\%Name1%
::переменная для работы непосредственно с публичной папкой
set FolderPublic=%CD%\Users\Public

::создание папок
mkdir "%CD%\Users"
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
        mkdir "%CD%\%%~i"
)
mkdir "%CD%\Users\%Name1%"
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
        mkdir "%FolderName1%\%%~i"
)
mkdir "%CD%\Users\Public"
for %%i in ("Documents" "Downloads" "Music" "Pictures" "Videos") do (
        mkdir "%FolderPublic%\%%~i"
)

::создание файлов desktop.ini для дополнительных папок в папке "%CD%"
::создание файла "%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"
::создание файла "%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"
::создание файла "%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"
::создание файла "%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"
::создание файла "%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"
::создание файла "%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"

::создание файлов desktop.ini для пользовательской папки %Name1%
::создание файла "%FolderName1%\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
)> "%FolderName1%\Documents\desktop.ini"
::создание файла "%FolderName1%\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
)> "%FolderName1%\Downloads\desktop.ini"
::создание файла "%FolderName1%\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=
)> "%FolderName1%\Favorites\desktop.ini"
::создание файла "%FolderName1%\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
)> "%FolderName1%\Music\desktop.ini"
::создание файла "%FolderName1%\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
)> "%FolderName1%\Pictures\desktop.ini"
::создание файла "%FolderName1%\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
)> "%FolderName1%\Videos\desktop.ini"

::создание файла desktop.ini для папки Users
(        echo.
        echo [.ShellClassInfo]
        echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21813
)> "%CD%\Users\desktop.ini"

::создание файла desktop.ini для папки Public
(        echo.
        echo [.ShellClassInfo]
        echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21816
)> "%CD%\Users\Public\desktop.ini"

::создание файлов desktop.ini для общих папок в папке "%CD\Users"
::создание файла "%FolderPublic%\Documents\desktop.ini"
(        echo.
        echo [.ShellClassInfo]
        echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21801
        echo [ViewState]
        echo Mode=
        echo Vid=
        echo FolderType=Documents
)> "%FolderPublic%\Documents\desktop.ini"
::создание файла "%FolderPublic%\Downloads\desktop.ini"
(        echo.
        echo [.ShellClassInfo]
        echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21808
        echo [ViewState]
        echo Mode=
        echo Vid=
        echo FolderType=Generic
)> "%FolderPublic%\Downloads\desktop.ini"
::создание файла "%FolderPublic%\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
)> "%FolderPublic%\Music\desktop.ini"
::создание файла "%FolderPublic%\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
)> "%FolderPublic%\Pictures\desktop.ini"
::создание файла "%FolderPublic%\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
)> "%FolderPublic%\Videos\desktop.ini"

::работа с аттрибутами
::установка атрибутов к файлу desktop.ini в папке Users
attrib.exe +s +h "%CD%\Users\desktop.ini"
attrib.exe +r "%CD%\Users"
::установка атрибутов к файлу desktop.ini в папке Users
attrib.exe +s +h "%FolderPublic%\desktop.ini"
attrib.exe +r "%FolderPublic%"
::установка атрибутов к файлам desktop.ini и к их дочерним папкам
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
        attrib.exe +s +h "%CD%\%%~i\desktop.ini"
        attrib.exe +r "%CD%\%%~i"
)
::установка атрибутов к файлам desktop.ini и к их дочерним папкам
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
        attrib.exe +s +h "%FolderName1%\%%~i\desktop.ini"
        attrib.exe +r    "%FolderName1%\%%~i"
)
::установка атрибутов к файлам desktop.ini и к их дочерним папкам
for %%i in ("Documents" "Downloads" "Music" "Pictures" "Videos") do (
        attrib.exe +s +h "%FolderPublic%\%%~i\desktop.ini"
        attrib.exe +r    "%FolderPublic%\%%~i"
)

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

::работа с правами доступа NTFS
::установка прав доступа NTFS к символьным ссылкам (связям) из %Name1% в дополнительных папках
icacls.exe "%CD%\Documents\Документы - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Documents\Документы - %Name1%" /inheritance:r /C /L /Q
icacls.exe "%CD%\Downloads\Загрузки - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Downloads\Загрузки - %Name1%" /inheritance:r /C /L /Q
icacls.exe "%CD%\Favorites\Избранное - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Favorites\Избранное - %Name1%" /inheritance:r /C /L /Q
icacls.exe "%CD%\Music\Музыка - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Music\Музыка - %Name1%" /inheritance:r /C /L /Q
icacls.exe "%CD%\Pictures\Изображения - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Pictures\Изображения - %Name1%" /inheritance:r /C /L /Q
icacls.exe "%CD%\Videos\Видео - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Videos\Видео - %Name1%" /inheritance:r /C /L /Q
::установка прав доступа NTFS к символьным ссылкам (связям) из общей папки в дополнительных папках
icacls.exe "%CD%\Documents\Общие документы" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) Администраторы:(M,RX,D,WDAC,WO) Пользователи:RX Все:RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /C /L /Q
icacls.exe "%CD%\Documents\Общие документы" /inheritance:r /C /L /Q
icacls.exe "%CD%\Downloads\Общие загруженные файлы" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) Администраторы:(M,RX,D,WDAC,WO) Пользователи:RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) Все:RX /C /L /Q
icacls.exe "%CD%\Downloads\Общие загруженные файлы" /inheritance:r /C /L /Q
icacls.exe "%CD%\Music\Общая музыка" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) Администраторы:(M,RX,D,WDAC,WO) Пользователи:RX Все:RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /C /L /Q
icacls.exe "%CD%\Music\Общая музыка" /inheritance:r /C /L /Q
icacls.exe "%CD%\Pictures\Общие изображения" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) Администраторы:(M,RX,D,WDAC,WO) Пользователи:RX Все:RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /C /L /Q
icacls.exe "%CD%\Pictures\Общие изображения" /inheritance:r /C /L /Q
icacls.exe "%CD%\Videos\Общие видео" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) Администраторы:(M,RX,D,WDAC,WO) Пользователи:RX Все:RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /C /L /Q
icacls.exe "%CD%\Videos\Общие видео" /inheritance:r /C /L /Q
::установка прав доступа NTFS для папки %Name1% из папки Users
icacls.exe "%FolderName1%" /grant:r *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /C /Q
icacls.exe "%FolderName1%" /inheritance:r /C /Q
::установка прав доступа NTFS для папки Public из папки Users
icacls.exe "%FolderPublic%" /grant:r *%Sid1%:(OI)(CI)(IO)(M,RX,D,WDAC,WO) Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /C /Q
icacls.exe "%FolderPublic%" /inheritance:r /C /Q
::установка прав доступа NTFS для папки "%CD%\Users"
icacls.exe "%CD%\Users" /grant:r Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /C /Q
icacls.exe "%CD%\Users" /inheritance:r /C /Q
::установка прав доступа NTFS на корневую папку (точка указывает на текущий каталог)
icacls.exe . /grant:r Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /C /L /Q
icacls.exe . /inheritance:r /C /Q

:exit
pause


Friek 19-01-2015 20:47 2458520

никак не пойму, почему это не работает
Код:

@echo off
cd /d "%~dp0"

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


Friek 20-01-2015 15:45 2458873

Ну вот, если владельцем корневого каталога (диска) является не группа администраторов или не администратор, и у него нет полного доступа, то при запуске скрипта от имени администратора не выполняются две последние строки раздачи прав
Код:

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

Недостаточно прав. Но, свежеотформатированная флешка делает меня владельцем, а права для группы "Все" делает полным доступом, и все работает.

Friek 23-01-2015 18:25 2460319

Привязал процедуры к скрипту получилась версия 4
Код:

@echo off
:start
::командный файл будет запущен в каталоге, где лежит, даже от имени администратора
cd /d "%~dp0"

::создание начальных переменных
::SID моего пользователя
set Sid1=мой SID
::имя моего пользователя, имя будущей папки
set Name1=Имя папки
::переменная для работы непосредственно с папкой имя которой указано в переменной Name1
set FolderName1=%CD%\Users\%Name1%
::переменная для работы непосредственно с публичной папкой
set FolderPublic=%CD%\Users\Public

::создание папок
mkdir "%CD%\Users"
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
        mkdir "%CD%\%%~i"
)
mkdir "%CD%\Users\%Name1%"
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
        mkdir "%FolderName1%\%%~i"
)
mkdir "%CD%\Users\Public"
for %%i in ("Documents" "Downloads" "Music" "Pictures" "Videos") do (
        mkdir "%FolderPublic%\%%~i"
)

::создание файла desktop.ini для папки Users
call :CreateDesktopIni "%CD%\Users"              "-21813" ""      ""    ""
::создание файлов desktop.ini для пользовательской папки %Name1%
call :CreateDesktopIni "%FolderName1%\Documents"  "-21770" ""      "-112" "Documents"
call :CreateDesktopIni "%FolderName1%\Downloads"  "-21798" ""      "-184" "Generic"
call :CreateDesktopIni "%FolderName1%\Favorites"  "-21796" ""      "-115" ""
call :CreateDesktopIni "%FolderName1%\Music"      "-21790" "-12689" "-108" "Music"
call :CreateDesktopIni "%FolderName1%\Pictures"  "-21779" "-12688" "-113" "Pictures"
call :CreateDesktopIni "%FolderName1%\Videos"    "-21791" "-12690" "-189" "Videos"
::создание файла desktop.ini для папки Public из папки Users
call :CreateDesktopIni "%FolderPublic%"          "-21816" ""      ""    ""
::создание файлов desktop.ini для общих папок в папке Users
call :CreateDesktopIni "%FolderPublic%\Documents" "-21801" ""      ""    "Documents"
call :CreateDesktopIni "%FolderPublic%\Downloads" "-21808" ""      ""    "Generic"
call :CreateDesktopIni "%FolderPublic%\Music"    "-21803" "-12689" ""    "Music"
call :CreateDesktopIni "%FolderPublic%\Pictures"  "-21802" "-12688" ""    "Pictures"
call :CreateDesktopIni "%FolderPublic%\Videos"    "-21804" "-12690" ""    "Videos"
::создание файлов desktop.ini для дополнительных папок в текущей папке
call :CreateDesktopIni "%CD%\Documents"          "-21770" ""      "-112" "Documents"
call :CreateDesktopIni "%CD%\Downloads"          "-21798" ""      "-184" "Generic"
call :CreateDesktopIni "%CD%\Favorites"          "-21796" ""      "-115" ""
call :CreateDesktopIni "%CD%\Music"              "-21790" "-12689" "-108" "Music"
call :CreateDesktopIni "%CD%\Pictures"            "-21779" "-12688" "-113" "Pictures"
call :CreateDesktopIni "%CD%\Videos"              "-21791" "-12690" "-189" "Videos"
goto start2

:CreateDesktopIni
        set sFolder=%~1
        set sLocalizedResourceNameNumber=%~2
        set sInfoTipNumber=%~3
        set sIconResourceNumber=%~4
        set sFolderType=%~5
       
        if defined sFolder (
                >"%sFolder%\desktop.ini" (
                        echo.
                        echo [.ShellClassInfo]
                        echo LocalizedResourceName=@%%SystemRoot%%\system32\shell32.dll,%sLocalizedResourceNameNumber%
                        if defined sInfoTipNumber echo InfoTip=@%%SystemRoot%%\system32\shell32.dll,%sInfoTipNumber%
                        if defined sIconResourceNumber echo IconResource=%%SystemRoot%%\system32\imageres.dll,%sIconResourceNumber%
                        echo [ViewState]
                        echo Mode=
                        echo Vid=
                        echo FolderType=%sFolderType%
                )
        )
        exit /b 0

:start2
::работа с атрибутами
::установка атрибутов к файлу desktop.ini в папке Users
attrib.exe +s +h "%CD%\Users\desktop.ini"
attrib.exe +r "%CD%\Users"
::установка атрибутов к файлу desktop.ini в папке Users
attrib.exe +s +h "%FolderPublic%\desktop.ini"
attrib.exe +r "%FolderPublic%"
::установка атрибутов к файлам desktop.ini и к их дочерним папкам
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
        attrib.exe +s +h "%CD%\%%~i\desktop.ini"
        attrib.exe +r "%CD%\%%~i"
)
::установка атрибутов к файлам desktop.ini и к их дочерним папкам
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
        attrib.exe +s +h "%FolderName1%\%%~i\desktop.ini"
        attrib.exe +r    "%FolderName1%\%%~i"
)
::установка атрибутов к файлам desktop.ini и к их дочерним папкам
for %%i in ("Documents" "Downloads" "Music" "Pictures" "Videos") do (
        attrib.exe +s +h "%FolderPublic%\%%~i\desktop.ini"
        attrib.exe +r    "%FolderPublic%\%%~i"
)

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

::работа с правами доступа NTFS
::установка прав доступа NTFS к символьным ссылкам (связям) из %Name1% в дополнительных папках
icacls.exe "%CD%\Documents\Документы - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q /inheritance:r /C /L /Q
icacls.exe "%CD%\Downloads\Загрузки - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q /inheritance:r /C /L /Q
icacls.exe "%CD%\Favorites\Избранное - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q /inheritance:r /C /L /Q
icacls.exe "%CD%\Music\Музыка - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q /inheritance:r /C /L /Q
icacls.exe "%CD%\Pictures\Изображения - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q /inheritance:r /C /L /Q
icacls.exe "%CD%\Videos\Видео - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q /inheritance:r /C /L /Q
::установка прав доступа NTFS к символьным ссылкам (связям) из общей папки в дополнительных папках
icacls.exe "%CD%\Documents\Общие документы" /grant:r "Прошедшие проверку":(OI)(CI)(IO)(M,RX) /C /L /Q
icacls.exe "%CD%\Downloads\Общие загруженные файлы" /grant:r "Прошедшие проверку":(OI)(CI)(IO)(M,RX) /C /L /Q
icacls.exe "%CD%\Music\Общая музыка" /grant:r "Прошедшие проверку":(OI)(CI)(IO)(M,RX) /C /L /Q
icacls.exe "%CD%\Pictures\Общие изображения" /grant:r "Прошедшие проверку":(OI)(CI)(IO)(M,RX) /C /L /Q
icacls.exe "%CD%\Videos\Общие видео" /grant:r "Прошедшие проверку":(OI)(CI)(IO)(M,RX) /C /L /Q
::установка прав доступа NTFS для папки %Name1% из папки Users
icacls.exe "%FolderName1%" /grant:r *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /C /Q /inheritance:r /C /Q
::установка прав доступа NTFS для папки Public из папки Users
icacls.exe "%FolderPublic%" /grant:r "Прошедшие проверку":(OI)(CI)(IO)(M,RX) /C /Q
::установка прав доступа NTFS на корневую папку (точка указывает на текущий каталог)
icacls.exe . /grant:r Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Все:(OI)(CI)RX /C /Q /inheritance:r /C /Q

:exit
pause



Время: 08:43.

Время: 08:43.
© OSzone.net 2001-