返回列表 发帖

[原创] 【续】[一日一教学](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


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

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

参数详解:

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

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


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

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

给文件夹520添加隐藏属性。
例如:
C:\Users\helloworld\Desktop>attrib +h 520COPY
效果:

刷性之后,520就消失了。

这时候就删除其隐藏属性。
例如:
C:\Users\helloworld\Desktop>attrib -h 520COPY
效果:


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

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

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

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

TOP

赞 !! ! !
待我出山之时,定让土匪大名满世界

TOP

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

赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞。

TOP

回复 8# Hello123World


    哦,我只是说建议,个人理解加了系统属性并不单指加强隐藏,如果有系统性,单改只读属性同样也是不行,说得不对请指正
1

评分人数

TOP

回复 6# yyykkkyyyy

系统属性配合隐藏属性使用,可以加强隐藏的效果——这里不是已经谈到了吗?

TOP

值得学习,谢谢分享

TOP

我是来学习的, 同时也提点建议
对此命令是否再加上一个小注意事项
如一文件加上系统属性或隐藏属性之后,又想改变其某种属性,比如:
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 仍去不掉隐藏属性

TOP

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

有没有设置隐藏属性 将d:\123下的所有文件及子目录设置了“隐藏”属性的同时也将自身设置隐藏属性?
1

评分人数

大学不迷茫,毕业即辉煌!

TOP

写的好,支持
除了学会了它的用法之外
而且学会两个单词 archives (档案 存档)      attribute  (属性)

TOP

回复 2# CUer


    2003有没有呢?

TOP

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

Vista也有。
如果一个知识点自己不能确定,最好别下这种结论性的定义,尤其是在写教学帖的时候,以免误导他人。
1

评分人数

    • Hello123World: 我仔细想了一下,措辞确实要严谨一点。PB + 3

TOP

返回列表