编写历程:

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

  之后就开始大刀阔斧的寻找方法来做这件事,上网找,说需要一个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. DOM元素的大小和位置

    HTML: <div id="parent"> <div id="box"> 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测 ...

  2. Qt写Activex插件 总结

    最近写的插件功能基本完成,也遇到了一些坑,在这里记录一下. 我写的这个插件的js接口是仿造google earth的js接口,尽可能的达到与它的api一致.先从最简单的说起: 1. 导出接口中的flo ...

  3. javascript平时例子⑧(大屏轮播)

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  4. Lua数据持久化

      1.数据文件 我们可以利用Lua中的table构造式来定义一种文件格式,即文件中的数据是table构造并初始化的代码 ,这种方式对于Lua程序而言是非常方便和清晰的,如: Entry{" ...

  5. android中工作线程安全

    当应用程序启动,创建了一个叫“main”的线程,用于管理UI相关,又叫UI线程.其他线程叫工作线程(Work Thread). Single Thread Model 一个组件的创建并不会新建一个线程 ...

  6. EMF学习,为了实现可扩展可自定义的模型验证 - emf quary 与 OCL

    http://blog.csdn.net/javaman_chen/article/details/6020050 //这里的验证强调的是condition的构造,基于查找来判断验证结果.支持OCL也 ...

  7. redis批量删除key

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #fffff ...

  8. Windows 7 常用快捷键

    常用的快捷键 Win键+D 回到桌面/当前界面(切换)Win键+M 回到桌面Win键+E 资源管理器Win键+R 运行 Win键+U 控制面板->所有控制面板项->轻松访问中心 Win键+ ...

  9. ansible-copy

    ansible是执行yaml文件控制远端服务器.执行命令为 ansible-playbook my.yamlplaybook是ansible中的脚本,采用yaml语言.VM1安装ansible,ip地 ...

  10. sqlite在火狐中安装及使用

    1.SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入 ...