Мне нужно скопировать папку со списком ПК в определенное место, а затем сделать эту папку «Полный доступ для всех» и передать ее во все подпапки и файлы.
Я создаю текстовый файл со списком ПК, а затем включаю его в файл bat.
Он выполняет простой пинг, чтобы увидеть, следует ли продолжить копирование, а затем выполняет простой оператор for / if / else, который обычно отлично работает для других задач «обслуживания» ...
Однако в этом случае я не могу заставить команду icacls работать правильно.
Команда, которую я изначально использовал, была такой:
for /f %%a in (add_pclist.txt) do (
ping -n 2 %%a
if errorlevel 1 (
echo %%a >> Test_PCFileCopyFail.txt
) else (
xcopy/e/h/i/y FOLDERNAME "\\%%a\c$\users\Public\Desktop"
icacls "\\%%a\c$\users\Public\Desktop\HMI" /grant Everyone:F /T
echo %%a >> Test_PCFileCopySuccess.txt
)
)
Однако, хотя это делает копию и делает папку «Полный доступ» - когда я смотрю на вкладку «Безопасность» в «Свойствах», у всех нет галочек. Я выбираю «Дополнительно», и хотя «Все» отображается как «Полный доступ», для параметра «Яблоки» установлено значение «Только эта папка», и я хочу, чтобы в нем говорилось «Эта папка, подпапки и файлы».
Если я вручную запускаю cmd:
icacls "\\%%a\c$\users\Public\Desktop\HMI" /grant Everyone:(OI)(CI)F /T
это работает. Однако, когда я помещаю эту команду в командный файл, она выдает ошибку
(CI was unexpected at this time.
Есть ли способ выполнить часть «Относится к» без части (OI) (CI) - в противном случае, как я могу включить ее в пакетный файл без получения ошибки? Я также попытался включить / Legitance: E в исходную команду icacls, но безрезультатно.
Большое спасибо!