BAT遍历目录并去掉文件夹隐藏属性

在实验室总是中病毒,文件夹变exe,原文件夹被隐藏,之前写过用attrib命令解决的方法,不过一个个的敲命令有点烦躁,毕竟文件夹比较多而且多是汉字,受到批处理打开程序的启发,找了一些资料,实现了批处理去掉文件夹的隐藏和系统属性。
方法如下:
新建一个bat文档,输入如下内容:

for /F %%i in ('dir I: /ad /b') do (attrib -r -s -h I:\%%i)
pause

其中 dir I:是我优盘的盘符,可以根据自己的情况修改。
for /F命令对列出的结果中的每一行记录进行分析,%i为每一行的记录内容即这里的文件名完整路径, do后面的括号里是对文件名进行处理的命令集。
其中 dir I: /ad /b中的 /ad /b解释如下:
/b使用空格式(没有标题信息或摘要)
/a显示具有指定属性的文件./ad表示显示目录
(属性d目录,r只读文件,h隐藏文件,a准备存档的文件,s系统文件,-表示否的前缀)
/s显示指定目录或要有子目录中的文件。

%%i中,因为%是特殊字符,在bat中又要当做字符处理,所以用了两个%来表示%做字符处理。关于%的资料:
%
\\使用两个%包含一个字符串表示引用环境变量。比如一个%time%可以扩展到当前的系统时间;
单个%紧跟0-9的一个数字表示引用命令行参数;
用于for中表示引用循环变量;
连续的两个%表示执行时脱为一个%。

atrrib -r -s -h意思是去掉隐藏、系统、只读属性。关于attrib的资料:
显示或更改文件属性。

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 处理符号链接和符号链接目标的属性。

当然,把attrib换成其他命令,还可以做更多的事情,比如del。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注