当前位置: 首页 > 编程笔记 >

PowerShell设置文件只读、隐藏属性的方法

裴焱
2023-03-14
本文向大家介绍PowerShell设置文件只读、隐藏属性的方法,包括了PowerShell设置文件只读、隐藏属性的方法的使用技巧和注意事项,需要的朋友参考一下

本文介绍一个PowerShell中如何设置文件属性。我们知道文件的属性有只读、隐藏、系统、存档和无内容索引等5个,只读和隐藏用得比较多,另外三个用得比较少。

一、文件的属性

不知道大家有没有用过attrib.exe这个cmd下的小程序,它可以用来设置文件的属性。建议大家先去了解一下这个attrib小程序。可以参考文章:使用attrib设置文件只读、隐藏和系统属性

下面我们来看看如何在PowerShell中设置文件只读、隐藏和系统属性。

我们知道,获取一个文件对象可以使用Get-Item这个cmdlet。但我们来看看下面的操作:

PS C:\Users\splaybow> get-item d:\2.txt

Get-Item : 找不到项 D:\2.txt。

所在位置 行:1 字符: 9

+ get-item <<<<  d:\2.txt

    + CategoryInfo          : ObjectNotFound: (D:\2.txt:String) [Get-Item], IO

   Exception

    + FullyQualifiedErrorId : ItemNotFound,Microsoft.PowerShell.Commands.GetIt

   emCommand


这个提示似乎很明确的告诉我们,找不到D:\2.txt这个文件。真的没有这个文件吗?不是的!这个文件之前被我设置了隐藏属性的系统属性,待我把它去掉试试。

PS C:\Users\splaybow> attrib -h -s d:\2.txt

PS C:\Users\splaybow> get-item d:\2.txt

    目录: D:\

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-ar--        2013/11/11     20:04          6 2.txt


这下子就找到该文件了。另外,大家可以出输出结果中看到Mode这部分,“ar”表示,该文件上还有存档属性和只读属性。我们也可以通过下面的命令来查看文件的属性:

PS C:\Users\splaybow> $file = Get-Item d:\2.txt

PS C:\Users\splaybow> $file.Mode

-ar--


关于文件的五种属性,洪哥就不再介绍了,有兴趣的朋友可以参考attrib的那篇文章。

二、设置文件属性

现在我们测试去掉文件上的只读属性,要用到文件对象的IsReadOnly属性。


PS C:\Users\splaybow> $file.IsReadOnly = $false

PS C:\Users\splaybow> $file.Mode

-a---

从这个结果上看,是不是r(只读)没有了?!要想重新加回来,再把IsReadOnly设置为$true即可。

聪明如洪哥者,一定会想,隐藏属性是不是可以通过$file对象的IsHidden来控制呢?呵呵,我们想错了。要想知道$file对象有哪些属性和方法,可以使用“$file | Get-Member”这个命令来查看。当然,任何对象,我们想知道它有哪些方法和属性,都可以通过“<对象变量> | Get-Memeber”的方式去获取。

不要扯远了,如何设置只读外的其它属性呢,那就只能使用Attributes属性了。且看下面的例子:


PS C:\Users\splaybow> $file.Attributes = "Readonly","system","notcontentindexed","hidden","archive"

PS C:\Users\splaybow> $file.mode

-arhs

PS C:\Users\splaybow> $file.Attributes

ReadOnly, Hidden, System, Archive, NotContentIndexed


上面的例子展示如何设置文件的只读属性、隐藏属性、系统属性、存档属性、无内容索引属性等。需要注意的是Mode属性和Attributes属性有一点区别,那就是Mode中貌似不会显示出无内容存档属性(I)来。

三、修改文件属性

上面讲的是一次性为文件设置一组属性,这样很简单,但也很粗暴。如果只想给他增加一个ReadOnly属性,其它的原属性不变,怎么操作呢?

在PowerShell中,可以将文件的属性当作一个二进制数组,使用二进制的按位或(bOR)操作符来运算一下就好了。且看例子:


PS C:\Users\splaybow> $file = Get-Item d:\2.txt

PS C:\Users\splaybow> $file.Attributes="hidden"

PS C:\Users\splaybow> $readonly = [System.IO.FileAttributes] "ReadOnly"

PS C:\Users\splaybow> $file.Attributes=$file.Attributes -bor $readonly

PS C:\Users\splaybow> $file.Attributes

ReadOnly, Hidden


上面例子中,文件本身只有一个隐藏属性,后面给它添加了一个只读属性,结果变更为隐藏、只读双属性。如果是要去掉其中一个属性呢?可惜没有按位非的操作符,怎么实现就留给大家思考。

关于PowerShell设置文件只读、隐藏和系统属性,本文就介绍这么多,希望对您有所帮助,谢谢!

 类似资料:
  • 本文向大家介绍CMD中使用attrib命令设置文件只读、隐藏属性详解,包括了CMD中使用attrib命令设置文件只读、隐藏属性详解的使用技巧和注意事项,需要的朋友参考一下 本文介绍一个cmd下的一个attrib.exe的小程序,它可以用来设置文件的属性。我们知道文件的属性有只读、隐藏、系统、存档和无内容索引等5个,只读和隐藏用得比较多,另外三个用得比较少。 不知道大家有没有用过attrib.exe

  • 本文向大家介绍Powershell中显示隐藏文件的方法,包括了Powershell中显示隐藏文件的方法的使用技巧和注意事项,需要的朋友参考一下 支持PS3.0及以后版本。 当你使用 Get-ChildItem 检索文件,默认是不显示隐藏文件的。 要包含隐藏文件,请使用 –Force 参数。 如果只需要显示隐藏文件,可以使用参数-Hidden ,但它只支持PS3.0。

  • 问题内容: 试图隐藏文件夹没有成功。我发现了: 但这对我没有用。我究竟做错了什么? 问题答案: 您的代码有两件事,都与文件夹名称文字有关。该函数需要Unicode字符串参数。您可以通过在字符串前面加上字符来指定其中之一。其次,字符串中的任何文字反斜杠字符都必须加倍,或者您也可以为其添加前缀。下面的代码中使用了一个双前缀。 您可以在此处找到Windows的系统错误代码。要在资源管理器中查看属性更改的

  • 本文向大家介绍PowerShell显示隐藏文件和系统文件的方法,包括了PowerShell显示隐藏文件和系统文件的方法的使用技巧和注意事项,需要的朋友参考一下 在PowerShell中,列出文件的cmdlet是Get-ChildItem,别名为dir。比如我们使用“dir $env:windir”可以显示Windows目录的文件和文件夹。 命令: 输出: 这里,我们来看看Mode属性这一列,一共五

  • 问题内容: 鉴于Python的动态性,如果无法实现,我会感到震惊: 我想更改的实现。 我试图简单地写成这样: 但这告诉我。 这是防止我做可能(可能)愚蠢的事情的好尝试,但是我真的很想继续做下去。我怀疑解释器有某种可以修改的查找表,但我在Google上找不到类似的表。也不起作用- 它返回了与只读属性完全相同的错误。 我很想寻找一个Python 2.7解决方案,如果那很重要的话,尽管没有理由拒绝抛出适

  • 我正在尝试构建一个带有Inno Setup的安装程序,该安装程序基于一些配置选项运行其他安装程序。为了简单起见,假设我有20个安装程序,可以在5种不同的配置中设置,其中每个配置都有一些必需的和一些可选的安装程序。配置A可能需要安装程序1、2、5、6,并有11、13和14的选项。配置B可能需要1、2、3、9,并有12、19和20的选项。以此类推。 我为每个安装程序准备了一个组件。理想情况下,我想使用