Perl取得和设置文件属性(WIN32系统)

发布时间:2020-10-10编辑:脚本学堂
Perl取得和设置文件属性(WIN32系统)

本文介绍WIN32下perl如何取得和修改文件的属性,供大家学习参考。

需要: use Win32::File;
然后使用如下方法:
 

复制代码 代码如下:
my $set;
#取得文件的属性
Win32::File::GetAttributes($name, $set);
#设置文件的属性
Win32::File::SetAttributes($name, ARCHIVE);

参考perldoc,可供设置的属性如下:

ARCHIVE  存档文件 32       
COMPRESsed  压缩文件 2048
DIRECTORY  目录文件 16
HIDDEN   隐藏文件 2
NORMAL  正常文件 128
OFFLINE  脱机文件 4096
readonly  只读文件 1
SYSTEM  系统文件 4
TEMPORARY  临时文件 256

    为了方便理解,我在程序里把每个选项对应的数值都打印出来附在后面了,每个选项都是只占一位的,因此我们可以用或|来同时应用多个属性,如下:
Win32::File::SetAttributes($name, ARCHIVE|HIDDEN);
这样文件同时是隐藏和存档文件了。
 

复制代码 代码如下:

use Win32::File;
Win32::File::SetAttributes($name, $attr);
#!/usr/bin/perl -w
use Win32::File;
$name  = "yourFile.txt";
$attr  = 0;

Win32::File::GetAttributes($name, $attr) or die "Can't get attributes for $name.";

print "File attributes: $attrn";

if ($attr & READONLY) {
    print "$name is read only.n";
}

if ($attr & ARCHIVE) {
    print "$name has ARCHIVE set.n";
}

if ($attr & HIDDEN) {
    print "$name is hidden.n";
}

if ($attr & SYSTEM) {
    print "$name has SYSTEM set.n";
}

if ($attr & COMPRESSED) {
    print "$name has COMPRESSED set.n";
}

if ($attr & DIRECTORY) {
    print "$name has DIRECTORY set.n";
}

if ($attr & NORMAL) {
    print "$name has NORMAL set.n";
}

if ($attr & OFFLINE) {
    print "$name has OFFLINE set.n";
}

if ($attr & TEMPORARY) {
    print "$name has TEMPORARY set.n";
}