[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理命令 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 命令也不行,请问如何不需要确认?   【是编辑权限不是替换】
花开不问月,不语笑红尘.

  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
复制代码

TOP

  1. echo y|cacls aaa.exe /e /c /p Administrator:f
复制代码

TOP

回复 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的问题确实是我多加了空格的原因,按你的命令执行是对的。
花开不问月,不语笑红尘.

TOP

回复 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| 之间空格的原因。
花开不问月,不语笑红尘.

TOP

回复 4# missll


    你没看到有两个for吗?

TOP

本帖最后由 cutebe 于 2012-6-18 15:14 编辑

原来是只保留 ADMIN 权限阿。
没看清,还以为你只是要修改 ADMIN 的权限,其他不变呢。
还是大校更厉害

TOP

话说 问题 还是一个一个开贴发问吧~
两个问题 掺杂在一起会混淆的~

TOP

回复 6# powerbat

你好 ,似乎是我没有表达清楚我的意思。  按照您提供的批处理 输出为:


我想要的输出结果是:
1111
2222
3333
4444
aaaa
bbbb
cccc
AAAA

每行一字符串。 有没有办法呢?
花开不问月,不语笑红尘.

TOP

回复 9# missll


哦,for %%i in ("%%a") do echo %%i 习惯性地加了引号,去掉即可。

TOP

返回列表