按照文件类型批量整理文件

Posted delphixx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按照文件类型批量整理文件相关的知识,希望对你有一定的参考价值。

;

;        按照文件类型批量整理文件

;

 

;
;
; ###################################################################
; ###################################################################
; ##
; ## 名称 按照文件类型批量整理文件
; ## 文件名 按照文件类型批量整理文件.ahk
; ## 作用 按照文件类型批量整理文件
; ## 用法 把需要批量分类整理的文件和文件夹移动到此脚本所在文件夹中的"F"文件夹中
; ## 用法 在安装了“AutoHotkey_1.1.30.00_setup.exe”软件的Windows7电脑中鼠标双击此文件直接运行
; ## 类型 AutoHotkey 脚本程序
; ## 位置 D:prAutoHotkeyScript
; ## 创建时间 2019年01月05日05时06分
; ## 修改时间 2019年03月01日08时41分
; ## 原创作者 徐晓亮(weiyunwps618)
; ## 作者的腾讯QQ号 595076941
; ## 作者的手机号码
; ##
; ###################################################################
; ###################################################################
;
;

;~ 在大批量移动文件之前必需先询问一下
MsgBox, 4, , "Loop All Files in ScriptDir"`n"是否立即按照文件类型批量整理子目录中所有文件?"`n`ncontinue?
IfMsgBox, No
ExitApp

MsgBox, 4, , "Loop All Files in ScriptDir"`n"是否立即按照文件类型批量整理子目录中所有文件?"`n`ncontinue?
IfMsgBox, No
ExitApp

FileCreateDir,%A_ScriptDir%F
FileCreateDir,%A_ScriptDir%!Classify

;~ 为重要文件的文件夹写上前缀标记
global importantmark
;~ global ProgressParam

;~ ProgressParam:=0

loop,Files,%A_ScriptDir%F*.*,R ;递归遍历穷举文件夹和子文件夹中的文件
{
;; 进度条窗口不可以移动,并且比较烦人
;; ProgressParam:=ProgressParam+0.5
;; if(ProgressParam>99)
;; ProgressParam:=0
;; ;~ 进度条
;; Progress, %ProgressParam%, %a_loopfilename%,"Moveing Files ...", "Classify And Arrange Files in Folder F"

if(A_LoopFileExt="")
{
IfNotExist,%A_ScriptDir%!ClassifyNullFileExt
FileCreateDir,%A_ScriptDir%!ClassifyNullFileExt
FileMove,%A_LoopFileFullPath%,%A_ScriptDir%!ClassifyNullFileExt\%A_LoopFileName%
Sleep,9
continue
}

importantmark:=""
if((A_LoopFileExt="docx") or(A_LoopFileExt="xlsx") or (A_LoopFileExt="jpg") )
importantmark:="1_"

if((A_LoopFileExt="ani") or (A_LoopFileExt="au3") or (A_LoopFileExt="avi") or (A_LoopFileExt="doc") or (A_LoopFileExt="dotx") or (A_LoopFileExt="xls") or (A_LoopFileExt="xltx") or (A_LoopFileExt="dot") or (A_LoopFileExt="xlt") or (A_LoopFileExt="ISO") or (A_LoopFileExt="GHO") or (A_LoopFileExt="flv") or (A_LoopFileExt="jpeg") or (A_LoopFileExt="mp4") or (A_LoopFileExt="png") or (A_LoopFileExt="ppt") or (A_LoopFileExt="pdf") or (A_LoopFileExt="7z") or (A_LoopFileExt="ahk") or (A_LoopFileExt="bat") or (A_LoopFileExt="chm") or (A_LoopFileExt="cmd") or (A_LoopFileExt="dot") or (A_LoopFileExt="exe") or (A_LoopFileExt="ico") or (A_LoopFileExt="mdb") or (A_LoopFileExt="mkv") or (A_LoopFileExt="mp3") or (A_LoopFileExt="pas") or (A_LoopFileExt="rar") or (A_LoopFileExt="txt") or (A_LoopFileExt="rmvb") or (A_LoopFileExt="vbs") or (A_LoopFileExt="zip"))
importantmark:="2_"

;~ MsgBox,% A_LoopFileSizeMB

IfGreater,A_LoopFileSizeMB,500
importantmark:="3_Big500MB_"

;~ 如果当前文件是此脚本本身那么跳过当前循环的剩余部分并继续下一次循环递归遍历穷举文件
if(A_ScriptFullPath=A_LoopFileFullPath)
{
continue
}
;~ 如果当前脚本所在目录没有当前循环的文件则直接移动文件并继续下一个循环
IfNotExist,%A_ScriptDir%!Classify\%importantmark%%A_LoopFileExt%\%A_LoopFileName%
{
IfNotExist,%A_ScriptDir%!Classify\%A_LoopFileExt%
FileCreateDir,%A_ScriptDir%!Classify\%importantmark%%A_LoopFileExt%
FileMove,%A_LoopFileFullPath%,%A_ScriptDir%!Classify\%importantmark%%A_LoopFileExt%\%A_LoopFileName%
Sleep,9
continue
}

;;如果当前循环的文件就在当前脚本所在目录中那么跳过当前循环的剩余部分并继续下一次循环
ScriptDirLoopFileName=%A_ScriptDir%!Classify\%importantmark%%A_LoopFileExt%\%A_LoopFileName%
if( ScriptDirLoopFileName=A_LoopFileFullPath)
{
continue
}

;~ MsgBox,%A_LoopFileFullPath%

;~ 重命名重复文件
DuplicateFileCount:=1
loop
{
IfExist,%A_ScriptDir%!Classify\%importantmark%%A_LoopFileExt%\%DuplicateFileCount%_%A_LoopFileName%
{
DuplicateFileCount=% ++DuplicateFileCount
continue
}
else
{
IfNotExist,%A_ScriptDir%!Classify\%A_LoopFileExt%
FileCreateDir,%A_ScriptDir%!Classify\%importantmark%%A_LoopFileExt%
FileMove,%A_LoopFileFullPath%,%A_ScriptDir%!Classify\%importantmark%%A_LoopFileExt%\%DuplicateFileCount%_%A_LoopFileName%
Sleep,9
break
}
}
}

MsgBox, 64, , %A_ScriptDir%"All Files in ScriptDir is Classifyed And Arranged"`n"恭喜你, 已经按照文件类型完成所有当前脚本所在目录和子目录中文件的分类整理"!

;~ MsgBox, 64, , "操作失败的文件共有"%ErrFileCount%"个,详细出错原因列表见ErrFileList.txt文件"!

return

; # 此AHK脚本结束 #############

以上是关于按照文件类型批量整理文件的主要内容,如果未能解决你的问题,请参考以下文章

IO流内容整理

如何批量读取文件(PDF或Word)页数并自动显示在文件名称中?

bat批量删除特定开头同一类型文件?

HTML Document类型的文件怎么批量打印?

使用通配符文件夹批量复制某些文件

Java用来进行批量文件重命名,批量提取特定类型文件