标题: 批分配权限问题已结,只是P名不能为CACLS.bat
[打印本页]
作者: beyoungse
时间: 2007-9-2 12:12
标题: 批分配权限问题已结,只是P名不能为CACLS.bat
……访问控制……
@echo off&Setlocal EnableDelayedExpansion
for /l %%a in (1,1,40) do (
set num=00%%a
set num=A!num:~-3!
cacls F:\data\!num! /T /G !num!:F
)
goto :eof
以上是我生搬的复制有规律文件夹的哪一篇 ,可是我执行中出现错误
如下:
已经达到最大的 setlocal 递归层,
[
Last edited by beyoungse on 2007-9-2 at 05:51 PM ]
作者: wudixin96
时间: 2007-9-2 12:23
setlocal的最大递归层为32层,(原来的记错了)
在需要延迟的行启用延迟吧,不要在P的第一行就启用,不需要时end local
http://www.cn-dos.net/forum/viewthread.php?tid=21322
这个帖子里有说明吧
[
Last edited by wudixin96 on 2007-9-2 at 02:14 PM ]
作者: beyoungse
时间: 2007-9-2 12:54
我该怎么写啊,楼上的老大
作者: knoppix7
时间: 2007-9-2 13:33
是这样吗?wudixin96?
我怎么记得是32层。。。。。。。。(我看来读书读晕了)
@echo off
for /l %%a in (1,1,40) do (
Setlocal EnableDelayedExpansion
set num=00%%a
set num=A!num:~-3!
cacls F:\data\!num! /T /G !num!:F
endlocal
)
goto :eof
[
Last edited by knoppix7 on 2007-9-2 at 04:50 PM ]
作者: beyoungse
时间: 2007-9-2 13:40
4楼的老大,
还是同样出错,"已经达到最大的 setlocal 递归层"
我的系统是Windows Server 2003 Standard Edition
作者: knoppix7
时间: 2007-9-2 13:42
@echo off
for /l %%a in (1,1,40) do (
call :FUNC1 %%i
)
goto :eof
:FUNC1
set num=00%1
set num=A%num:~-3%
cacls F:\data\%num% /T /G %num%:F
goto :EOF
作者: beyoungse
时间: 2007-9-2 13:57
楼上的还是不行的,只是一个光标在运
我生成一个P文件:
CACLS F:\data\A001 /T /G A001:F
CACLS F:\data\A002 /T /G A002:F
……
……
……
CACLS F:\data\A040 /T /G A040:F
***************************************
P运行不行的,只出现一行就停住了;
我只能单行执行,但是又要按 Y 确认
作者: wudixin96
时间: 2007-9-2 14:15
Quote: |
Originally posted by knoppix7 at 2007-9-2 01:33 PM:
是这样吗?wudixin96?
我怎么记得是32层。。。。。。。。(看来读书读晕了)
|
|
是我记错了,谢谢提醒
作者: wudixin96
时间: 2007-9-2 14:16
不用setlocal,用call试试?
作者: beyoungse
时间: 2007-9-2 14:32
我现在只能说
“你能不能帮我写一个VBS”
因为………………
作者: wudixin96
时间: 2007-9-2 14:37
@echo off
for /l %%a in (1,1,40) do (
set num=00%%a
call set num=A%%num:~-3%%
call cacls F:\data\%%num%% /T /G %%num%%:F
)
goto :eof
这样行吗?
作者: beyoungse
时间: 2007-9-2 14:50
不行的,执行完了,指定的文件夹还有以下系统默认的用户组或用户名称
Administrator (SERVER\Administrators)
CREATOR OWNER
SYSTEM
Users (SERVER\Users)
作者: wudixin96
时间: 2007-9-2 15:00
没看楼主写的内容,如果内容正确的话,应该没问题的
作者: beyoungse
时间: 2007-9-2 15:36
写的东西是没有错

作者: wudixin96
时间: 2007-9-2 15:48
楼主的P本来就是赋予某用户的对某文件夹的权限啊,没有删除其他用户的权限吧
作者: beyoungse
时间: 2007-9-2 16:00
但是没有加入指定用户的权限啊,就只有原来默认用户及组的权限
作者: chenall
时间: 2007-9-2 16:07
楼主的批处理本身并没有错.
错误在于
你的批处理文件名是cacls.bat
而且批处理里面有使用了cacls命令造成循环调用cacls.bat
将批处理文件名改一下就OK了.或将批处理里面的cacls改为cacls.exe
因为cacls.exe是nt系统中设置权限的命令
根据调用规则会先调用本身目录下的cacls.bat/cmd/exe/com之类的.
然后再从path目录里面的目录中查找.
[
Last edited by chenall on 2007-9-2 at 04:09 PM ]
作者: beyoungse
时间: 2007-9-2 16:22
我现在把名子改了但是出现“帐户名与安全标识间无任何映射完成”这样的提示
作者: chenall
时间: 2007-9-2 16:24
因为不存在那些用户啊.
如果是这个批处理,那系统中需要有以下用户
A001/A002/A003.../A040
作者: knoppix7
时间: 2007-9-2 16:51
用cacls的/d参数删除
作者: beyoungse
时间: 2007-9-2 17:09
Quote: |
Originally posted by chenall at 2007-9-2 16:24:
因为不存在那些用户啊.
如果是这个批处理,那系统中需要有以下用户
A001/A002/A003.../A040 |
|
用户是存在的
作者: chenall
时间: 2007-9-2 17:44
我还是那一句话
系统中不存在用户,或你的批处理有问题.(用顶楼的批处理是可以的)
用命令看下
net user
看看里面有没有A001 A002的用户
作者: beyoungse
时间: 2007-9-2 20:58
谢谢