批处理 attrib命令 批量隐藏和显示文件及文件夹

发布时间:2019-06-17 11:49:56 分类:文章 作者:宋佰鑫 阅读数(0)

作用

通过该命令可以为文件、文件夹及其子文件夹添加删除属性,做到隐藏和显示文件及文件夹的效果。

使用方法(两种)

最下面有代码,直接复制到.txt文档中,改为.bat批处理文件,就可以用了。

第一种:将此.bat文件放在想要隐藏(显示)的文件夹内,双击运行即可

第二种:将想要隐藏(显示)的文件 或 文件夹拖拽到此.bat文件上即可

扩展及设置位置

windows系统中文件的隐藏其实是有两个级别的,第一种就是平时用的简单的隐藏,直接在文件的属性中就可以进行设置;第二种是我们这次使用的将文件改为系统文件。

这两个级别通过 “文件夹选项” 中的 “查看” 选项卡就看得出来:

文件夹选项

代码

隐藏.bat

@echo off
set /a s=0,e=0,o=0,f=0
if "%~f1"=="" (call :folder "%cd%") else dir /ad %~f1 >nul 2>nul && call :folder "%~f1"
for /f %%i in ('dir /a/b/s %~f1') do dir /ad %%i >nul 2>nul && (call :folder "%%i") || (call :file "%%i")
set /a s+=e,o+=f
echo 处理完成
echo 处理文件 %s% 个,失败 %e% 个;
echo 处理目录 %o% 个,失败 %f% 个。
echo 按任意键结束
pause>nul
goto :eof
:file
attrib +s +h +a +r %~f1 >nul 2>nul && (echo 处理文件%~f1---OK & set /a s+=1) || (echo 处理文件%~f1---ERROR & set /a e+=1)
goto :eof
:folder
attrib +s +h +a +r %~f1 >nul 2>nul && (echo 处理目录%~f1---OK & set /a o+=1) || (echo 处理目录%~f1---ERROR & set /a f+=1)
goto :eof

取消隐藏.bat

@echo off
set /a s=0,e=0,o=0,f=0
if "%~f1"=="" (call :folder "%cd%") else dir /ad %~f1 >nul 2>nul && call :folder "%~f1"
for /f %%i in ('dir /a/b/s %~f1') do dir /ad %%i >nul 2>nul && (call :folder "%%i") || (call :file "%%i")
set /a s+=e,o+=f
echo 处理完成
echo 处理文件 %s% 个,失败 %e% 个;
echo 处理目录 %o% 个,失败 %f% 个。
echo 按任意键结束
pause>nul
goto :eof
:file
attrib -s -h -a -r %~f1 >nul 2>nul && (echo 处理文件%~f1---OK & set /a s+=1) || (echo 处理文件%~f1---ERROR & set /a e+=1)
goto :eof
:folder
attrib -s -h -a -r %~f1 >nul 2>nul && (echo 处理目录%~f1---OK & set /a o+=1) || (echo 处理目录%~f1---ERROR & set /a f+=1)
goto :eof

解析

attrib批处理文件命令具体如下:

+ 添加属性
- 清除属性
R 只读文件属性
A 存档文件属性
S 系统文件属性
H 隐藏文件属性

如果只是偶尔使用一次且不需要隐藏子目录子文件等,我们可以使用CMD来使用该命令。

例如下面的命令将会隐藏C盘下file.exe文件和C盘下folder文件夹(对其子目录子文件等无作用)

attrib +s +h +a +r C:\file.exe

attrib +s +h +a +r C:\folder