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

[文件操作] [已解决]批处理怎样搜索指定路径中的文件夹,并设置权限?

本帖最后由 yy521b 于 2011-10-21 10:34 编辑

先上一个简单的代码。
  1. @echo off
  2. cd /d e:\
  3. for /f %%i in ('dir /s/b "linux"') do (
  4. cacls %%i /t /e /c /g 789:r
  5. )
  6. pause
复制代码
这段代码的意思是 搜索E盘中所有的 linux 文件夹, 并添加用户789的只读权限,此代码成功操作。 按理说我要是只想搜索e:\123\ 文件夹下所有linux 文件夹并赋予权限时 我只要将上边的代码 第二行 e:\改成e:\123\ 就应该可以了,但是我改过之后执行此BAT  它只能搜到我的e:/123/linux/下边的linux文件夹!! 呵呵! 有点像绕口令了! 我真不知道怎么组织语言了,我形容一下我的实际环境吧.  就是我e盘下边有一个123的文件夹,123问价夹下边 又有 linux、linux1、linux2、linux3 这四个文件夹,这四个文件夹中都有一个linux文件夹,我现在的目的是 搜索 123问价夹中 所有叫 linux的文件夹并赋予权限, 我用上边的代码操作可以将e盘中所有叫linux的文件夹搜索出来,但是我把第二行的e:\改成e:\123  就只能搜索到 e:\123\linux 及其下边的linux问价夹, 其他的 linux1、linux2、linux3中的linux文件夹搜索不到。不知我形容的是否清楚, 请各位坛友帮忙指导,或者有什么更好的方法解决这个问题,希望赐教。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

你这句有问题。dir /s/b "linux"
如果你当前文件夹是e:的话,dir /s/b "linux"的意思就是搜索e:\linux下的所有文件夹。

TOP

回复 2# leeonix

我的e:\ 盘有两个文件夹 一个是 123 一个是456,这两个文件夹下面都有很多的linux 文件夹, 当我用上边的代码对整个E盘搜索时,真的 E盘所有的 linux文件夹都搜出来了,这是真的,我也操作了。但是我只想对123
文件夹进行搜索时就像我上面说的 它只能搜到e:\123\linux   其他的linux1、linux2.。。。下面的linux文件夹搜不到, 请帮忙指正上边的代码,或有什么跟好的办法,谢谢了!

TOP

以前随风好像也发过一个帖子,貌似是说 dir /s 时,如果存在与关键词同名的文件夹,关键词将被当成目标路径看待,印象中好像没看到纯 dir 的解决方案...
可以用 findstr 筛选
  1. for /f %%i in ('dir /s/b/ad "linux"^|findstr /e \linux') do cacls %%i /t /e /c /g 789:r
复制代码
或者不用 dir
  1. for /r /d %%a in (linux) do if exist %%a cacls %%i /t /e /c /g 789:r
复制代码
1

评分人数

TOP

  1. @echo off
  2. for /r "E:\123\" %%a in (.) do (
  3.     if "%%~na" equ "linux" (
  4.         cacls "%%a" /t /e /c /g 789:r
  5.     )
  6. )
复制代码
1

评分人数

TOP

去下载一个Unix工具,名字也叫Find。结合xargs一下就可以搞定。。。

TOP

谢谢 版主 ,您的方法太棒了!!

TOP

返回列表