最近在整理文件的时候,遇到了一些隐藏文件与打不开文件夹的问题,正好写篇博客整理一下
系统环境
- windows10
隐藏文件
1、基于隐藏属性的隐藏
windows下面隐藏文件最简单的莫过于直接在资源管理器里面,直接给予属性隐藏
但是,如果我们的资源管理器打开了显示隐藏文件,这种做法就会无效
当然,反过来想,如果我们不打开显示,是不是就可以做到隐藏了呢?当然
通过bat脚本去强制锁定注册表中不显示的设置,就可以做到,晚上分享的挺多的,这里略了(其实一直保持不显示,也挺不方便)
2、基于attrib命令属性赋予
cmd下面我们可以使用attrib来操作文件的各种属性,attrib的使用帮助如下:
赋予文件隐藏属性
attrib +s +h filename
解除隐藏属性
attrib -s -h filename
查看文件属性
attrib filename
dir /a
当然,上述方法应用于cmd,powershell可以使用下面的命令
# 查看文件以及属性
get-childitem --force
❯ get-childitem -force
目录: D:\test\111
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/3/4 17:09 33642 1.txt
powershell对get-childitem
还做了别名,使用效果是一致的:
- gci
- ls
- dir
powershell下当然也是可以对文件的权限进行修改,不过比cmd下的attrib
就要麻烦一些,需要的是变量赋值思路(毕竟面向对象语言),代码如下:
❯ $filename = get-item .\1.txt
❯ $filename.mode
-a----
❯ $filename.Attributes
Archive
❯ $filename.Attributes = "archive","hidden","system"
文件夹的隐藏
基于特殊后缀的隐藏
其实也就是clsid,windows组件对象的唯一标识号
A CLSID is a globally unique identifier that identifies a COM class object. If your server or container allows linking to its embedded objects, you need to register a CLSID for each supported class of objects.
使用方法,直接添加上后缀即可
查看文件其实也很简单,和上面一样
解除后缀名需要在cmd使用rename命令,poweshell略了
rename "d:/test/111.{450D8FBA-AD25-11D0-98A8-0800361B1103}" "111"
当然,空文件夹名,利用rename也可以实现
rename "d:/test/111.{450D8FBA-AD25-11D0-98A8-0800361B1103}" " .{450D8FBA-AD25-11D0-98A8-0800361B1103}"
常见clsid如下:
名称 | CLSID |
---|---|
我的文档 | {450D8FBA-AD25-11D0-98A8-0800361B1103} |
我的电脑 | {20D04FE0-3AEA-1069-A2D8-08002B30309D} |
网上邻居 | {208D2C60-3AEA-1069-A2D7-08002B30309D} |
回收站 | {645FF040-5081-101B-9F08-00AA002F954E} |
InternetExplorer | {871C5380-42A0-1069-A2EA-08002B30309D} |
控制面板 | {21EC2020-3AEA-1069-A2DD-08002B30309D} |
拨号网络/网络连接 | {992CFFA0-F557-101A-88EC-00DD010CCC48} |
任务计划 | {D6277990-4C6A-11CF-8D87-00AA0060F5BF} |
打印机(和传真): | {2227A280-3AEA-1069-A2DE-08002B30309D} |
历史文件夹 | {7BD29E00-76C1-11CF-9DD0-00A0C9034933} |
ActiveX缓存文件夹 | {88C6C381-2E85-11D0-94DE-444553540000} |
公文包 | {85BBD920-42A0-1069-A2E4-08002B30309D} |
..后缀文件与文件夹的删除
可能还有…这种目录隐藏方法,其实那不是目录隐藏,可以理解成软连接指向了
如果你遇到…这种后缀,或者空格后缀的文件,无法删除,进windows下子系统bash,切换到该目录,rm
即可删除
windows无法删除这些文件或者文件夹,是因为文件名包括 Win32 命名空间中的无效名称,你用windows的命令去删除的时候,他会解析指向一个不存在的文件夹或文件,所以找不到该文件