Board logo

标题: [系统相关] 批处理命令 for 和 cacls 的问题 [打印本页]

作者: missll    时间: 2012-6-18 13:10     标题: 批处理命令 for 和 cacls 的问题

-------------1.txt----------------
1111 2222 3333
aaaa bbbb
AAAA
---------------------------------------
  1. for /f "tokens=1-3" %%a in (1.txt) do (
  2. echo %%a
  3. echo %%b
  4. 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

  1. for /f "delims=" %%a in (1.txt) do for %%i in ("%%a") do echo %%i
复制代码
不要随便加空格
  1. echo y| cals.exe aaa.exe /p Administrator:F
复制代码

作者: cutebe    时间: 2012-6-18 14:47

  1. 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