编写历程:

  前段日子,晚上下班回家,一个舍友问我可不可以将一个目录下的隐藏文件全部显示出来(变成非隐藏文件),我说可以。

  之后就开始大刀阔斧的寻找方法来做这件事,上网找,说需要一个Windows下的小工具,但是舍友的笔记本上未安装此工具。

  那就找bat脚本进行遍历之后修改,可是弄了好半天bat脚本没有执行成功(主要是bat脚本好久不写了,生疏太多)。

  自己亦感觉有些挂不住面子了,因为时间确实有些晚了,还没有任何改变的(变为非隐藏文件)迹象。

  遂舍友说太晚,明日上班,大家先休息吧。

  但总感觉自己是行的,是可以的,是没有问题的。

  所以第二日上班,利用午休时间实现了一个小功能,即改变文件属性的小脚本,

  对文件属性为:只读/存档/系统文件/隐藏文件/普通/脱机文件/临时文件  的一系列文件属性问题进行增加和删除的实现。

  希望对大家有所启发。

  具体实现如下:

#cs ____________________________________

Au3 版本:
脚本作者: wozijisun
Email: 
QQ/TM: 
脚本版本: v1.0
脚本功能: 实现了对文件属性:只读/存档/系统文件/隐藏文件/普通/脱机文件/临时文件 ----进行增加/删除 文件属性功能

#ce _______________脚本开始_________________

#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>

_main_gui()

Func _main_gui()

$Form1 = GUICreate("Change Directory", 450, 120, -1, -1)
GUISetIcon(@SystemDir & "\mspaint.exe", 0)
$label1 = GUICtrlCreateLabel("Directory Path:", 30, 13)
$filePath = GUICtrlCreateInput("", 140, 10, 280, Default)
$label2 = GUICtrlCreateLabel("File Attribute:", 30, 43)
$com = GUICtrlCreateCombo("", 140, 40, 140,Default,$CBS_DROPDOWNLIST + $WS_VSCROLL)
$com_value = GUICtrlSetData($com, "READONLY --- (只读)|"& _
"ARCHIVE ---- (存档)|"& _
"SYSTEM - (系统文件)|"& _
"HIDDEN - (隐藏文件)|"& _
"NORMAL ----- (普通)|"& _
"OFFLINE -(脱机文件)|"& _
"TEMPORARY(临时文件)", "READONLY --- (只读)")
GUICtrlCreateGroup("Choose",300,30,120,45)
$do_radio = GUICtrlCreateRadio("++++", 310, 44, 40, 25) ; 增加属性单选按钮
$undo_radio = GUICtrlCreateRadio("----", 360, 44, 40, 25) ; 删除属性单选按钮
GUICtrlSetState(-1, $GUI_CHECKED) ; 设置默认值
$OK_btn = GUICtrlCreateButton("MOVE ?", 85, 70, 60, 25)
GUICtrlSetState(-1, $GUI_DISABLE) ; 不用此按钮
$Display_btn = GUICtrlCreateButton("Display ?", 160, 70, 60, 25)
$Cancel_btn = GUICtrlCreateButton("CLOSE ?", 235, 70, 60, 25)

GUISetState(@SW_SHOW)

Do
$msg = GUIGetMsg()
Select
Case $msg == $OK_btn
$file = GUICtrlRead($filePath)
If Not FileExists($file) Then
MsgBox(0, "Info", "输入一个目录!")
ContinueLoop
EndIf
$att = FileGetAttrib($file)
If StringInStr($att, "D") == 0 Then
MsgBox(0, "Info", "输入一个目录!")
ContinueLoop
EndIf

If StringLen($file) == 0 Then
MsgBox(0, "Info", "输入一个目录!")
ContinueLoop
Else
If Not FileExists($file & "\D_I_R") Then
DirCreate($file & "\D_I_R")
EndIf
EndIf
$search = FileFindFirstFile($file & "\*")

If $search = -1 Then
MsgBox(0, "Info", "没有信息了。")
Exit 
EndIf

While 1
$f = FileFindNextFile($search)
If @error Then
MsgBox(0,"Info","好了,成功了。结果在D_I_R目录下。")
ExitLoop
EndIf

If $f == "D_I_R" Then
ContinueLoop
EndIf

$att = FileGetAttrib($file & "\" & $f)

If StringInStr($att, "H") <> 0 Then
DirCreate($file & "\D_I_R\" & $f)
FileMove($file & "\" & $f, $file & "\D_I_R\" & $f)
FileSetAttrib($file & "\D_I_R\" & $f & "\" & $f, "-H")
EndIf
WEnd
FileClose($search)

Case $msg == $Display_btn
$file = GUICtrlRead($filePath) ;获取目录
If Not FileExists($file) Then
MsgBox(0, "Info", "输入一个目录!")
ContinueLoop
EndIf
$att = FileGetAttrib($file) ;获取目录属性
If StringInStr($att, "D") == 0 Then
MsgBox(0, "Info", "输入一个目录!")
ContinueLoop
EndIf

If StringLen($file) == 0 Then
MsgBox(0, "Info", "输入一个目录!")
ContinueLoop
EndIf
$att_mark = GUICtrlRead($com) ; 读取属性信息
$flag = "" ; 定义属性值
If $att_mark == "READONLY --- (只读)" Then
$flag = "R"
ElseIf $att_mark == "ARCHIVE ---- (存档)" Then
$flag = "A"
ElseIf $att_mark == "SYSTEM - (系统文件)" Then
$flag = "S"
ElseIf $att_mark == "HIDDEN - (隐藏文件)" Then
$flag = "H"
ElseIf $att_mark == "NORMAL ----- (普通)" Then
$flag = "N"
ElseIf $att_mark == "OFFLINE -(脱机文件)" Then
$flag = "O"
ElseIf $att_mark == "TEMPORARY(临时文件)" Then
$flag = "T"
Else
MsgBox(0, "info", "There is something wrong with attribute.")
ContinueLoop
EndIf
$mark = "" ;获取增加或删除的指令
If BitAND(GUICtrlRead($do_radio), $GUI_CHECKED) = $GUI_CHECKED Then
$mark = "+"
EndIf
If BitAND(GUICtrlRead($undo_radio), $GUI_CHECKED) = $GUI_CHECKED Then
$mark = "-"
EndIf
$do_mark = $mark & $flag ;标记要增加还是要删除的属性

$search = FileFindFirstFile($file & "\*")

If $search = -1 Then
MsgBox(0, "Info", "没有信息了。")
Exit 
EndIf

While 1
$f = FileFindNextFile($search)
If @error Then
MsgBox(0,"Info","好了,成功了。结果在D_I_R目录下。")
ExitLoop
EndIf

If $f == "D_I_R" Then
ContinueLoop
EndIf

;$att = FileGetAttrib($file & "\" & $f)

;If StringInStr($att, "H") <> 0 Then ;可以做条件筛选,进行定向改变文件属性
FileSetAttrib($file & "\" & $f, $do_mark)
;FileSetAttrib($file & "\" & $f, $do_mark, 1) ;设置为1时会遍历目录下所有子目录及文件
;EndIf
WEnd
FileClose($search)
Case $msg == $Cancel_btn Or $msg == $GUI_EVENT_CLOSE
Exit 1
EndSelect

Until $msg == $GUI_EVENT_CLOSE
EndFunc

使用AutoIT对增加和删除文件属性的实现的更多相关文章

  1. iOS --SQL的增加、删除、查找、修改

    iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Manager的步骤: 第一步:在工具栏找到附加 ...

  2. 扩展BindingList,防止增加、删除项时自动更新界面而不出现“跨线程操作界面控件 corss thread operation”异常

    在做界面程序时,常常需要一些数据类,界面元素通过绑定等方式显示出数据,然而由于UI线程不是线程安全的,一般都需要通过Invoke等方式来调用界面控件.但对于数据绑定bindingList而言,没法响应 ...

  3. 使用mysql 命令行,增加 ,删除 字段 并 设置默认值 及 非空

    使用mysql 命令行,增加 ,删除 字段 并 设置默认值 及 非空 添加 alter table table_name add field_name field_type; 添加,并设置默认值,及非 ...

  4. UITableView增加和删除、移动

    复习一下: 1.在控制器上添加一个UITableView,  暂时该UITableView控件变量名命名为为tableView, 设置控件代理,实现控制器的UITableViewDataSource, ...

  5. Oracle表字段的增加、删除、修改和重命名

    本文主要是关于Oracle数据库表中字段的增加.删除.修改和重命名的操作. 增加字段语法:alter table tablename add (column datatype [default val ...

  6. 10月16日下午MySQL数据库CRUD操作(增加、删除、修改、查询)

    1.MySQL注释语法--,# 2.2.后缀是.sql的文件是数据库查询文件. 3.保存查询. 关闭查询时会弹出提示是否保存,保存的是这段文字,不是表格(只要是执行成功了表格已经建立了).保存以后下次 ...

  7. Oracle 增加修改删除字段与添加注释

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter ...

  8. Entity Framework4.0 (六) EF4的 增加、删除、更改

    前面介绍了EF4的查询功能,主要是借助于LINQ的强大的查询功能和它简单的语法.让我们可以完全面向对象集体去进行查询,而不必去劳心处理那些关系型数据库表的操作.这样我们更容易把主要精力集中在业务逻辑上 ...

  9. Oracle 增加修改删除字段

    Oracle 增加修改删除字段 添加字段的语法:alter table tablename add (column datatype [default value][null/not null],…. ...

随机推荐

  1. Softmax回归

    Reference: http://ufldl.stanford.edu/wiki/index.php/Softmax_regression http://deeplearning.net/tutor ...

  2. dedecms 时间标签strftime和MyDate

    先说下内容页样式: 日期:{field:pubdate function=strftime('m-d',@me)/} 01-01 日期:{field:pubdate function=strftime ...

  3. discuz sphinx全文检索搜索引擎方案

    基于discuz的索引配置文件,这个配置文件比较灵活,可以根据不同的需求来配置 # # linuxTone full index search configure file # source lt_p ...

  4. 2016huasacm暑假集训训练三 G - 还是畅通工程

    题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/G 这题和上一道题差不多,还更简单点,直接用prim算法就行,直接贴AC代码: im ...

  5. 【转】自学成才秘籍!机器学习&深度学习经典资料汇总

      小编都深深的震惊了,到底是谁那么好整理了那么多干货性的书籍.小编对此人表示崇高的敬意,小编不是文章的生产者,只是文章的搬运工. <Brief History of Machine Learn ...

  6. 再谈java两种变量(基本类型和引用类型)(综合各路大神)

    基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. int  a:   a=250: //声明变量a的同时,系统给a分配了数据空间. 引用类型: 是一个对象类型,值是什么呢? ...

  7. 【转】WiFi基础知识

    http://blog.csdn.net/myarrow/article/details/7930131 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a IEE ...

  8. Implicit and Explicit Multithreading MULTITHREADING AND CHIP MULTIPROCESSORS

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION The concept of thread ...

  9. SQL TOP 子句、SQL LIKE 操作符、SQL 通配符

    TOP 子句 TOP 子句用于规定要返回的记录的数目. 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 注释:并非所有的数据库系统都支持 TOP 子句. SQL Server 的语法: S ...

  10. erlang调试之JCL

    Job control mode (JCL), in which jobs can be started, stopped, detached or connected. Only the curre ...