Board logo

标题: [原创] 【续】[一日一教学](15)设置文件属性:attrib [打印本页]

作者: Hello123World    时间: 2011-8-27 14:46     标题: 【续】[一日一教学](15)设置文件属性:attrib

本帖最后由 Hello123World 于 2011-11-7 15:46 编辑

【原】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-2576-1-1.html
【续】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-13798-1-1.html


帮助信息:
  1. 显示或更改文件属性。
  2. ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I]
  3.        [drive:][path][filename] [/S [/D] [/L]]
  4.   + 设置属性。
  5.   - 清除属性。
  6.   R 只读文件属性。
  7.   A 存档文件属性。
  8.   S 系统文件属性。
  9.   H 隐藏文件属性。
  10.   I 无内容索引文件属性。
  11.   [drive:][path][filename]
  12.       指定 attrib 要处理的文件。
  13.   /S 处理当前文件夹及其所有子文件夹中的匹配文件。
  14.   /D 也处理文件夹。
  15.   /L 处理符号链接和符号链接目标的属性。
复制代码
如果是使用xp的同学,可能会发现,这个帮助信息比你的帮助信息多出了一个“参数/l”还有一个“I 无内容索引文件属性”。
“符号链接”和“索引文件”都是后xp时代引进的新概念(据说vista采用了这些技术,win7中是实打实的见识到了),如果要介绍/l 和 i 又不得不说明“符号链接”和“索引文件”,但这两个概念我自身都没明白透彻,所以决定暂时不讲,待日后学透彻了,再来补充本教程。

命令概括:
attrib,全英文attribute,意为:属性;下辖2个参数(不包括/l),可设置4种属性(不包括“属性 i”)。

参数详解:

首先输入光杆attrib。
例如:
  1. C:\Users\helloworld\Desktop>attrib
  2. A            C:\Users\helloworld\Desktop\02.txt
  3. A       I    C:\Users\helloworld\Desktop\1.txt
  4. A            C:\Users\helloworld\Desktop\3.txt
  5. A            C:\Users\helloworld\Desktop\48个音标视屏提取器.bat
  6. A            C:\Users\helloworld\Desktop\a.txt
  7. A            C:\Users\helloworld\Desktop\aboboo.lnk
  8. A            C:\Users\helloworld\Desktop\BaiduHelpBook.chm
  9. A            C:\Users\helloworld\Desktop\Batch external command.txt - 快捷方
  10. nk
  11. A            C:\Users\helloworld\Desktop\clip.txt
  12. A            C:\Users\helloworld\Desktop\clip1.bat
  13.    SH        C:\Users\helloworld\Desktop\desktop.ini
  14. A            C:\Users\helloworld\Desktop\Google 翻译.url
  15. A            C:\Users\helloworld\Desktop\hello.bat
  16. A            C:\Users\helloworld\Desktop\HprSnap6.exe.lnk
  17. A            C:\Users\helloworld\Desktop\Internet Explorer.lnk
  18. A            C:\Users\helloworld\Desktop\MyRarHelp.txt
  19. A            C:\Users\helloworld\Desktop\new  2.bat
  20. A            C:\Users\helloworld\Desktop\QQ影音.lnk
  21. A            C:\Users\helloworld\Desktop\Script56.CHM - 快捷方式.lnk
  22. A            C:\Users\helloworld\Desktop\test.bat
  23. A            C:\Users\helloworld\Desktop\test.txt
  24. A            C:\Users\helloworld\Desktop\test.vbs
  25. A            C:\Users\helloworld\Desktop\VB6企业版.EXE.lnk
  26. A            C:\Users\helloworld\Desktop\Windows Live Writer.lnk
  27. A            C:\Users\helloworld\Desktop\两大搜索引擎集合器.bat
  28.      R       C:\Users\helloworld\Desktop\傲游浏览器2.lnk
复制代码
可以看出,显示了桌面上所有的文件属性,同时也列出了所有文件的完全路径(思考:由后面这一点,同学们可以想到什么呢?)
  1. /S 处理当前文件夹及其所有子文件夹中的匹配文件。
复制代码
/s,全英文subdirectory,意为:子目录。(可以看出,其实很多参数都是相通的,dir 中的 /s,rd中的 /s皆是“子目录”的意思)
既然有/s参数,那么attrib自然默认也是不会显示“子文件夹中文件的属性”。
我的桌面上其实还有4个文件夹,其中有个“520”文件夹,看看加上/s后能否把里面的内容显示出来。

例如:
  1. C:\Users\helloworld\Desktop>attrib /s
  2. A            C:\Users\helloworld\Desktop\520\12\world_hello.txt
  3. A            C:\Users\helloworld\Desktop\520\1.bat
  4. A       I    C:\Users\helloworld\Desktop\520\1.doc
  5. A            C:\Users\helloworld\Desktop\520\115优蛋.lnk
  6. A            C:\Users\helloworld\Desktop\520\360安全桌面.lnk
  7. A            C:\Users\helloworld\Desktop\520\code.exe - 快捷方式.lnk
  8. A            C:\Users\helloworld\Desktop\520\ComicAiII.exe - 快捷方式.lnk
  9. A            C:\Users\helloworld\Desktop\520\DeskSpace.lnk
  10. A            C:\Users\helloworld\Desktop\520\ezproxy.exe - 快捷方式.lnk
  11. A            C:\Users\helloworld\Desktop\520\FinalData 2.0 OEM.lnk
  12. A            C:\Users\helloworld\Desktop\520\Format Factory.lnk
  13. A            C:\Users\helloworld\Desktop\520\KKJDock.exe.lnk
  14. A            C:\Users\helloworld\Desktop\520\mhdesk.exe.lnk
  15. A            C:\Users\helloworld\Desktop\520\PPTV在线影视.lnk
  16. A            C:\Users\helloworld\Desktop\520\PP游戏世界.lnk
  17. A            C:\Users\helloworld\Desktop\520\QQ影音.lnk
  18. A            C:\Users\helloworld\Desktop\520\WPS文字.lnk
  19. A            C:\Users\helloworld\Desktop\520\WPS演示.lnk
复制代码
显示出来了,而且最先显示的就是520文件夹中的文件属性。
  1. /D 也处理文件夹。
复制代码
/d,全英文directory,意为:目录(dos时代的旧称,windows称文件夹)。
还是逆向的思考,既然有这个参数,那么attrib自然默认也是不显示文件夹的。
加上/d参数会怎么样呢?
例如:
  1. C:\Users\helloworld\Desktop>attrib /s /d
  2. A            C:\Users\helloworld\Desktop\520\12\world_hello.txt
  3. A            C:\Users\helloworld\Desktop\520\1.bat
  4. A       I    C:\Users\helloworld\Desktop\520\1.doc
  5. A            C:\Users\helloworld\Desktop\520\115优蛋.lnk
  6.              C:\Users\helloworld\Desktop\520\12
  7. A            C:\Users\helloworld\Desktop\520\360安全桌面.lnk
  8. A            C:\Users\helloworld\Desktop\520\code.exe - 快捷方式.lnk
  9. A            C:\Users\helloworld\Desktop\520\ComicAiII.exe - 快捷方式.lnk
  10. A            C:\Users\helloworld\Desktop\520\DeskSpace.lnk
  11. A            C:\Users\helloworld\Desktop\520\ezproxy.exe - 快捷方式.lnk
  12. A            C:\Users\helloworld\Desktop\520\FinalData 2.0 OEM.lnk
  13. A            C:\Users\helloworld\Desktop\520\Format Factory.lnk
  14. A            C:\Users\helloworld\Desktop\520\KKJDock.exe.lnk
  15. A            C:\Users\helloworld\Desktop\520\mhdesk.exe.lnk
  16. A            C:\Users\helloworld\Desktop\520\PPTV在线影视.lnk
  17. A            C:\Users\helloworld\Desktop\520\PP游戏世界.lnk
  18. A            C:\Users\helloworld\Desktop\520\QQ影音.lnk
  19. A            C:\Users\helloworld\Desktop\520\WPS文字.lnk
  20. A            C:\Users\helloworld\Desktop\520\WPS演示.lnk
  21. A            C:\Users\helloworld\Desktop\520\WPS表格.lnk
  22. A            C:\Users\helloworld\Desktop\520\YodaoDict.exe.lnk
复制代码
看出差别来了吗?
  1.              C:\Users\helloworld\Desktop\520\12
复制代码
这是“520文件夹”下的“12文件夹”,没加/d时可是没有显示的。


以上都是显示,但是如何设置文件的属性呢?
请听我慢慢道来:
但凡文件,皆有属性。只读、存档、系统、隐藏,在attrib中就为r、a、s、h,其英文全称read、archives、system、hide。
+为加,-为减。加,便赋予属性,减,便删除属性。

以上说了那么多,其实真正常用的属性只有 h,和 h结合s。

给文件夹520添加隐藏属性。
例如:
  1. C:\Users\helloworld\Desktop>attrib +h 520
复制代码
效果:
[attach]4344[/attach]
刷性之后,520就消失了。

这时候就删除其隐藏属性。
例如:
  1. C:\Users\helloworld\Desktop>attrib -h 520
复制代码
效果:
[attach]4345[/attach]

系统属性配合隐藏属性使用,可以加强隐藏的效果。
例如:
  1. C:\Users\helloworld\Desktop>attrib +s +h 520
  2. C:\Users\helloworld\Desktop>attrib  -h 520
  3. 未重置系统文件 - C:\Users\helloworld\Desktop\520
复制代码
怎么解除这种加强隐藏的效果呢?
例如:
  1. C:\Users\helloworld\Desktop>attrib -s -h 520
复制代码
扩展阅读:

1.其实,我一开始也不知道attrib可以光杆使用,但是我一看到attrib的语法,我就知道了。
这里就教教大家看命令语法的小知识:
  1. ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I]
  2.        [drive:][path][filename] [/S [/D] [/L]]
复制代码
除了attrib没有框在中括号中,其它的所有参数都在中括号中,这点信息就告诉了我,attrib可以光杆使用。
[]中的信息都是可选的参数,(可选参数:就是可以有,也可以没有)。
[|]这样的符号代码,虽然是可选参数,但只能二选其一,当然也可以是多选其一,且只能选一个。
  1. C:\Users\helloworld\Desktop>attrib +h -h 520
  2. 参数格式不正确 -
复制代码
2.具有系统属性(+s)的文件、文件夹,不能随意改变其他属性(-a 或-h),需要改变其系统属性才能改变其他属性(-a -s或-h -s)。感谢yyykkkyyyy。
作者: CUer    时间: 2011-8-27 15:47

“符号链接”和“索引文件”都是win7中引进的新概念

Vista也有。
如果一个知识点自己不能确定,最好别下这种结论性的定义,尤其是在写教学帖的时候,以免误导他人。
作者: Hello123World    时间: 2011-8-27 15:49

回复 2# CUer


    2003有没有呢?
作者: zaixinxiangnian    时间: 2011-8-28 12:10

写的好,支持
除了学会了它的用法之外
而且学会两个单词 archives (档案 存档)      attribute  (属性)
作者: surup    时间: 2011-11-5 14:25

  1. attrib +h d:\123 /s /d
复制代码
前者只有d:\123以及它同名的子目录设为了“隐藏”,而其它文件及子目录都没有设置“隐藏”。
  1. attrib +h d:\123\*.* /s /d
复制代码
后者则将d:\123下的所有文件及子目录设置了“隐藏”属性,但d:\123目录没有设置“隐藏”属性。

有没有设置隐藏属性 将d:\123下的所有文件及子目录设置了“隐藏”属性的同时也将自身设置隐藏属性?
作者: yyykkkyyyy    时间: 2011-11-5 22:16

我是来学习的, 同时也提点建议
对此命令是否再加上一个小注意事项
如一文件加上系统属性或隐藏属性之后,又想改变其某种属性,比如:
attrib +s +h +r config.sys
想只去掉其中的隐藏属性, 若仅仅用 attrib -h config.sys 是不行的,必须把已带的系统属性或隐藏属性也列上:
attrib +s -h  config.sys
或干脆连系统属性无论原来有没有加, 都一起去掉
attrib -s -h config.sys
实际上在原来DOS系统中, 经常用时把这三种属性(s h r) 要加一起加, 要去一起去的
我提这个的意思是可能会有人仅用attrib -h 仍去不掉隐藏属性
作者: xslxslxsl    时间: 2011-11-5 23:46

值得学习,谢谢分享
作者: Hello123World    时间: 2011-11-7 12:51

回复 6# yyykkkyyyy

系统属性配合隐藏属性使用,可以加强隐藏的效果——这里不是已经谈到了吗?
作者: yyykkkyyyy    时间: 2011-11-7 14:22

回复 8# Hello123World


    哦,我只是说建议,个人理解加了系统属性并不单指加强隐藏,如果有系统性,单改只读属性同样也是不行,说得不对请指正
作者: raominping    时间: 2014-7-8 11:03

本帖最后由 raominping 于 2014-7-8 11:05 编辑

赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞。
作者: Tufeiheike    时间: 2014-9-9 19:21

赞 !! ! !
作者: shelluserwlb    时间: 2014-11-2 14:57

本帖最后由 shelluserwlb 于 2014-11-2 15:00 编辑

如果一个文件/文件夹设置了系统属性和隐藏属性后,如果用attrib命令单单只清除此文件夹的隐藏属性是去不掉的,必须要先清除此文件的系统属性才行。
例(win7系统):
                  attrib +s +h 1.txt
                  attrib -h 1.txt
系统提示: 未重置系统文件
                   attrib -s  -h 1.txt
                 成功清除1.txt的隐藏属性。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2