CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

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

CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

Сообщение Friek »

Всем добрый вечер. Есть необходимость создать на нескольких флешках и жестких дисках одинаковые папки с одинаковыми правами.

Для этого я попытался написать скрипт, и вроде написал. Он работает, но я столкнулся с некоторыми для меня трудностями.

При запуске готового батника от имени администратора (правой кнопкой мыши по файлу) все операции проводятся не с текущей папкой а с папкой системы 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

Re: CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

Сообщение Georgio »

Цитата Friek:



При запуске готового батника от имени администратора (правой кнопкой мыши по файлу) все операции проводятся не с текущей папкой а с папкой системы C:\Windows\system32
CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS






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

Код:

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

cd /d "%~dp0"

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

Re: CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

Сообщение Friek »

Цитата Georgio:





Код:

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

cd /d "%~dp0"

CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS




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

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

Re: CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

Сообщение Friek »

Код:

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

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

Re: CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

Сообщение Georgio »

Цитата Friek:



А можно как нибудь упростить мой код, например раздавать права по условию всем файлам/папкам рекурсивно и без наследства?
CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS








Код:

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

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








Цитата Friek:



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






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

Re: CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

Сообщение Friek »

Цитата Georgio:



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




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

Re: CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

Сообщение Friek »

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



Код:

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

@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

Re: CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

Сообщение Iska »

Цитата Friek:



Продолжу сжимать код, надо посмотреть, что там команда for делает
CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS




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


Цитата Friek:





Код:

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

mkdir "%CD%\Documents"
mkdir "%CD%\Downloads"
mkdir "%CD%\Favorites"
mkdir "%CD%\Music"
mkdir "%CD%\Pictures"
mkdir "%CD%\Videos"

CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS




меняется на:



Код:

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

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"

CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS




на:



Код:

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

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» Изображение?! А то можно было бы во всех:



Скрытый текст

[spoiler]Код:
[/spoiler]

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

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

Re: CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

Сообщение Friek »

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




Цитата Iska:



Кстати, а где в последнем «Favorites» ?! А то можно было бы во всех:
CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS




в папке 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"
CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS




у всех папок разные строчные параметры LocalizedResourceName и IconResource
Аватара пользователя
Iska

Re: CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS

Сообщение Iska »

Цитата Friek:



у всех папок разные строчные параметры LocalizedResourceName и IconResource
CMD/BAT - Автоматизация создания папок и раздача прав доступа NTFS




Для подобных вещей можно использовать процедуру:



Скрытый текст

[spoiler]Код:
[/spoiler]

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

@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
Ответить

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