来自变量的批处理文件夹权限

问题描述 投票:0回答:1

我需要使用变量从 bat 文件更改文件夹权限(以及包含的文件)。

类似:

icacls "%dat%"  /T /C /grant *S-1-1-0:(f)

但这似乎并没有按预期工作。 %dat% 变量工作正常,因为蝙蝠的其余部分适用于没有文件夹权限问题的人,

我创建的bat文件开始

set root=%~dp0
ECHO DRAG YOUR T.O.P FOLDER HERE
ECHO the one With "textures" folder inside.
set /p top= Then press Enter
ECHO Drag your fallout 4 Data folder here
set /p dat= then press enter
ECHO Drag your Archive2 folder here
set /p arc= then press enter
goto :choice1

(该部分工作正常) 然后它会进入一系列也可以正常工作的选项。

唯一的问题是有些人没有修改数据文件夹的权限。 bat 文件需要创建文件夹,并在该文件夹中移动文件。

我认为问题在于:

icacls "%dat%"  /T /C /grant *S-1-1-0:(f)

正在设置数据文件夹内容的权限,但不是数据文件夹本身。

值得注意的是,bat 文件需要从数据文件夹内运行以消除变量。因此,将其在目录树中向上移动一个文件夹可以让我按原样使用它并消除少数问题。这无疑会给许多人带来更多问题。

就目前而言,需要工作的所有内容都可以工作,唯一的问题是我似乎无法在 dat 文件夹上设置文件夹权限。而且我真的不想添加额外的变量,除非我也有..

(我可以在开始序列中添加一个“set /p new=”部分,但我发誓我应该能够在没有它的情况下做到这一点。)

欢迎任何帮助。

我会在这里发布整个bat文件,但我认为没有必要。它只是一个重复的 go to: 命令列表,用于单独处理文件。

(将文件移动到创建的文件夹,将该文件提取到第二个创建的文件夹。将额外的文件添加到提取的文件中,将提取的文件重新压缩为与原始文件相同的文件名,将新文件移动到原始位置,删除2 个工作文件夹,重新创建同名的 2 个工作文件夹,然后继续处理下一个文件)

所有这些都运行良好。我相信你能想象它是如何完成的。

-=编辑=-

只是想知道是否是我执行的 icals 是错误的.. 这是正确的吗?

icacls "%dat%" /grant:r *S-1-1-0:f /T /C

或者我构建它的第一种方式很好吗?

batch-file variables permissions directory
1个回答
0
投票

答案是:

icacls %dat% /grant:r *S-1-1-0:(OI)(CI)F /T /C

...

( %dat% ) being a variable directory address which was inputed earlier in the bat file.

/grant:r 是必需的,因为没有 :r 它会授予特殊权限,而不是设置实际权限。 (我以为你需要 /l 才能做到这一点)

/t sets the permission from the variable to all subfolders and files.
F is Full permission. (for some reason it does not need a / 
/c lets the thing continue running even if there were errors. 
(OI) is Object inherit.
(CI) is container inherit. 
and *S-1-1-0: is the user. (that is the ID for "everyone" that way it works on any language. 

“每个人”在非英语版本上可能会失败”

© www.soinside.com 2019 - 2024. All rights reserved.