标题: [系统相关] 批处理命令 for 和 cacls 的问题 [打印本页]
作者: missll 时间: 2012-6-18 13:10 标题: 批处理命令 for 和 cacls 的问题
-------------1.txt----------------
1111 2222 3333
aaaa bbbb
AAAA
---------------------------------------- for /f "tokens=1-3" %%a in (1.txt) do (
- echo %%a
- echo %%b
- echo %%c)
复制代码
我想把 1.txt中的文字输出, 要求是每行输出一个,我用以上命令输出的时候 ,如果文本中每行不是3条 就会出错,
理想的输出为:
1111
2222
3333
aaaa
bbbb
AAAA
-------------------------------------------------------------
关于cacls.exe的问题, 我想把某文件修改权限,修改成只有Administrators完全控制 ,因为/p参数需要 确认(输入Y) ,所以我一步操作不出来。
cacls.exe /? /P user:perm 替换指定用户的访问权限。
cals.exe aaa.exe /p Administrator:F
是否确定(Y/N)?
使用 echo y | cals.exe aaa.exe /p Administrator:F 命令也不行,请问如何不需要确认? 【是编辑权限不是替换】
作者: powerbat 时间: 2012-6-18 13:49
- for /f "delims=" %%a in (1.txt) do for %%i in ("%%a") do echo %%i
复制代码
不要随便加空格- echo y| cals.exe aaa.exe /p Administrator:F
复制代码
作者: cutebe 时间: 2012-6-18 14:47
- echo y|cacls aaa.exe /e /c /p Administrator:f
复制代码
作者: missll 时间: 2012-6-18 14:51
回复 2# powerbat
--------------1.txt-----------
1111 2222 3333 4444
aaaa bbb cccc
AAAA
很感谢你的回复 但是第一条命令看来是有问题的。
如果delims=的话 没有分割符号 读1.txt的时候就有问题了
用 for /f "delims=" %%a in (1.txt) do echo %%a 测试输出%%a的时候就只有AAAA了。后边就肯定不对了。
calcs.exe的问题确实是我多加了空格的原因,按你的命令执行是对的。
作者: missll 时间: 2012-6-18 14:53
回复 3# cutebe
C:\1.exe BUILTIN\Administrators:F
NT AUTHORITY\SYSTEM:F
MICROSOF4AF1E3\Missll:F
BUILTIN\Users:R
C:\>echo y|cacls.exe 1.exe /e /c /p Administrator:f
处理的文件: C:\1.exe
C:\>cacls 1.exe
C:\1.exe BUILTIN\Administrators:F
NT AUTHORITY\SYSTEM:F
MICROSOF4AF1E3\Missll:F
BUILTIN\Users:R
MICROSOF4AF1E3\Administrator:F
加/E 参数是不可以的, 只加/P 就可以了,是因为我多加了 echo y| 之间空格的原因。
作者: powerbat 时间: 2012-6-18 15:01
回复 4# missll
你没看到有两个for吗?
作者: cutebe 时间: 2012-6-18 15:13
本帖最后由 cutebe 于 2012-6-18 15:14 编辑
原来是只保留 ADMIN 权限阿。
没看清,还以为你只是要修改 ADMIN 的权限,其他不变呢。
还是大校更厉害
作者: garyng 时间: 2012-6-18 19:40
话说 问题 还是一个一个开贴发问吧~
两个问题 掺杂在一起会混淆的~
作者: missll 时间: 2012-6-18 21:37
回复 6# powerbat
你好 ,似乎是我没有表达清楚我的意思。 按照您提供的批处理 输出为:
我想要的输出结果是:
1111
2222
3333
4444
aaaa
bbbb
cccc
AAAA
每行一字符串。 有没有办法呢?
作者: powerbat 时间: 2012-6-18 22:17
回复 9# missll
哦,for %%i in ("%%a") do echo %%i 习惯性地加了引号,去掉即可。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |