支持子文件夹的按照文件扩展名批量分类整理文件的AutoHotkey脚本源代码2021年04月29日

支持子文件夹的按照文件扩展名批量分类整理文件的AutoHotkey脚本源代码2021年04月29日

 

更快速更简单的蓝奏云分享链接

 

 

 

;

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

;

 

;
;
; ###################################################################
; ###################################################################
; ##
; ##           名称                 按照文件类型批量整理文件
; ##           文件名             按照文件类型批量整理文件.ahk
; ##           作用                 按照文件类型批量整理文件
; ##           用法                 把需要批量分类整理的文件和文件夹移动到此脚本所在文件夹中的"F"文件夹中
; ##           用法                 在安装了“AutoHotkey_1.1.30.00_setup.exe”软件的Windows7电脑中鼠标双击此文件直接运行
; ##           类型                 AutoHotkey 脚本程序
; ##           位置                 D:\pr\AutoHotkey\Script
; ##           创建时间          2019年01月05日05时06分
; ##           修改时间          2019年03月01日08时41分
; ##           原创作者            晓亮  ahk
; ##           作者的腾讯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

loop,9
{
 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%\!Classify\NullFileExt
    FileCreateDir,%A_ScriptDir%\!Classify\NullFileExt
   FileMove,%A_LoopFileFullPath%,%A_ScriptDir%\!Classify\NullFileExt\%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="flac") 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脚本结束 #############

人已赞赏
其他

用AutoHotkey定义全局无窗口快捷键的源代码

2021-4-29 10:07:53

其他

DS1515+

2021-5-2 11:25:56

2 条回复 A文章作者 M管理员
  1. SHBH

    666

  2. aahk

    @SHBH Thank you !

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索