整理15万个文档表格办公文件-2022年9月16日

      整理15万个文档表格办公文件-2022年9月16日

第1步:收集文档表格办公文件

用FastCopy(64位) ver4.2.0 简体中文汉化版复制所有文档表格办公文件到

速度最快的磁盘分区中的 \应整理的文件\F 文件夹。

在执行复制之前填写FastCopy的过滤器的包括内容为

*.doc;*.docx;*.xls;*.xlsx;*.jpg;*.png

从Synology群晖NAS或者微软的 Windows Server 2022 文件服务器中复制文件需要先用RaiDrive连接WebDAV Server并映射网络驱动器虚拟磁盘 Z:

不同的文件来源复制到不同的子文件中,子文件名称可以是:

\应整理的文件\F\群晖NAS

\应整理的文件\F\Windows-Server-2022

\应整理的文件\F\闪迪4TB移动固态硬盘E81

\应整理的文件\F\USB3.0移动机械硬盘5TB

\应整理的文件\F\银灿IS903可启动U盘USM-PE-v6

等等

第2步:删除重复文件

依次用Vistanita Duplicate Finder和DoubleKiller Pro这两款软件删除文件夹\应整理的文件\F中的重复文件

第3步:提取高价值文档表格办公文件

 

https://www.filelocator.cn/

 

安装并运行由 https://www.mythicsoft.com/  出品的

FileLocator Pro   Version 2022 - Build 3341

(专业版 试用 30 天 试用许可证)

手动创建文件夹  \应整理的文件\F  的全文正文内容搜索索引数据库

工具(T) -> 索引管理器 Ctrl+M -> 添加索引 (Insert) 

 

 

用FileLocator Pro搜索并提取高价值文件到文件夹 \应整理的文件\高价值文件

文件名称空着不填。

包含文本填公司简称、姓名简称、项目简称或者其他高价值的相关关键字。

查找位置填写D:\应整理的文件\F。

我的速度最快的磁盘分区是D:,假如您的最快分区不是D:请调整查找位置。

文件比较多时可以分批进行移动,找满500个文件时停止查找并全选所有找到的文件并剪切选中的文件。

第4步:提取暂时无用的文档表格办公文件

按照第3步的方法移动暂时无用的文档表格办公文件到文件夹 \应整理的文件\暂时无用的文件 。

检查并删除确实无用的文件。

第5步:按照文件扩展名分类整理文档表格办公文件

用FileLocator Pro提取高价值文件并用FileLocator Pro删除无用文件之后再用

按照文件扩展名分类整理的工具对剩余的文件进行分类整理

使用DropIt

http://www.dropitproject.com/

或者使用 Alternate Archiver

https://www.alternate-tools.com/pages/c_archiver.php?lang=GER

或者使用 AutoHotkey脚本

按照文件扩展名分类整理文档表格办公文件

; ========== 此AHK脚本从此行开始 ==========

; 按照文件类型批量整理子文件夹中所有文件的AHK脚步
#SingleInstance,force
loop,5
{
	DetectHiddenWindows,On
	Sleep,5
	IfWinExist,QQ595076941_fenlei
		ExitApp
}
Gui, Show, Hide,QQ595076941_fenlei
runwith("admin","ansi")   ;强制自身以 ansi + 管理员权限 运行。
#Persistent
; #NoTrayIcon
DetectHiddenWindows,On
SetTitleMatchMode,2

; ========== 此行是此AutoHotkey脚本的代码块段落分隔行 ==========

;~ 在大批量移动文件之前必需先询问一下
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%\!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

; ========== 此行是此AutoHotkey脚本的代码块段落分隔行 ==========

; 强制自身进程以 管理员权限 或 普通权限 或 ANSI 或 U32 或 U64 版本运行。
; 例1: runwith("admin","u32") 强制自身以 u32 + 管理员权限 运行。
; 例2: runwith("","ansi")     强制自身以 ansi 版本运行(权限不变)。
; 例3: runwith("normal")      强制自身以 普通权限 运行(版本不变)。
RunWith(RunAsAdmin:="Default", ANSI_U32_U64:="Default")
{
	; 格式化预期的模式
	switch, RunAsAdmin
	{
		case "Normal","Standard","No","0":		RunAsAdmin:=0
		case "Admin","Yes","1":								RunAsAdmin:=1
		case "default":												RunAsAdmin:=A_IsAdmin
default:															RunAsAdmin:=A_IsAdmin
	}
switch, ANSI_U32_U64
{
	case "A32","ANSI","A":								ANSI_U32_U64:="AutoHotkeyA32.exe"
	case "U32","X32","32":								ANSI_U32_U64:="AutoHotkeyU32.exe"
	case "U64","X64","64":								ANSI_U32_U64:="AutoHotkeyU64.exe"
	case "default":												ANSI_U32_U64:="AutoHotkey.exe"
default:															ANSI_U32_U64:="AutoHotkey.exe"
	}
; 获取传递给 “.ahk” 的用户参数(不是 /restart 之类传递给 “.exe” 的开关参数)
for k, v in A_Args
{
	if (RunAsAdmin=1)
	{
		; 转义所有的引号与转义符号
		v:=StrReplace(v, "\", "\\")
		v:=StrReplace(v, """", "\""")
		; 无论参数中是否有空格,都给参数两边加上引号
		; Run       的内引号是 "
		ScriptParameters  .= (ScriptParameters="") ? """" v """" : A_Space """" v """"
	}
	else
	{
		; 转义所有的引号与转义符号
		; 注意要转义两次 Run 和 RunAs.exe
		v:=StrReplace(v, "\", "\\")
		v:=StrReplace(v, """", "\""")
		v:=StrReplace(v, "\", "\\")
		v:=StrReplace(v, """", "\""")
		; 无论参数中是否有空格,都给参数两边加上引号
		; RunAs.exe 的内引号是 \"
		ScriptParameters .= (ScriptParameters="") ? "\""" v "\""" : A_Space "\""" v "\"""
	}
}
; 判断当前 exe 是什么版本
if (!A_IsUnicode)
	RunningEXE:="AutoHotkeyA32.exe"
else if (A_PtrSize=4)
	RunningEXE:="AutoHotkeyU32.exe"
else if (A_PtrSize=8)
	RunningEXE:="AutoHotkeyU64.exe"
; 运行模式与预期相同,则直接返回。 ANSI_U32_U64="AutoHotkey.exe" 代表不对 ahk 版本做要求。
if (A_IsAdmin=RunAsAdmin and (ANSI_U32_U64="AutoHotkey.exe" or ANSI_U32_U64=RunningEXE))
	return
; 如果当前已经是使用 /restart 参数重启的进程,则报错避免反复重启导致死循环。
else if (RegExMatch(DllCall("GetCommandLine", "str"), " /restart(?!\S)"))
{
	预期权限:=(RunAsAdmin=1) ? "管理员权限" : "普通权限"
	当前权限:=(A_IsAdmin=1)  ? "管理员权限" : "普通权限"
	ErrorMessage=
	(LTrim
		预期使用: %ANSI_U32_U64%
		当前使用: %RunningEXE%
		预期权限: %预期权限%
		当前权限: %当前权限%
		程序即将退出。
	)
	MsgBox 0x40030, 运行状态与预期不一致, %ErrorMessage%
	ExitApp
}
else
{
	; 获取 AutoHotkey.exe 的路径
	SplitPath, A_AhkPath, , Dir
	if (RunAsAdmin=0)
	{
		; 强制普通权限运行
		switch, A_IsCompiled
		{
			; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
			; 工作目录不用单独指定,默认使用 A_WorkingDir 。
			case, "1": Run, RunAs.exe /trustlevel:0x20000 "\"%A_ScriptFullPath%\" /restart %ScriptParameters%",, Hide
default: Run, RunAs.exe /trustlevel:0x20000 "\"%Dir%\%ANSI_U32_U64%\" /restart \"%A_ScriptFullPath%\" %ScriptParameters%",, Hide
	}
}
else
{
	; 强制管理员权限运行
	switch, A_IsCompiled
	{
		; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
		; 工作目录不用单独指定,默认使用 A_WorkingDir 。
		case, "1": Run, *RunAs "%A_ScriptFullPath%" /restart %ScriptParameters%
default: Run, *RunAs "%Dir%\%ANSI_U32_U64%" /restart "%A_ScriptFullPath%" %ScriptParameters%
	}
}
ExitApp
}
}

; ========== 此AutoHotkey脚本到此行结束 ==========

第6步:批量将多个文件按指定数量分配到多个文件夹里

访问存放过多文件的文件夹时会速度缓慢或者电脑卡死

所以有必要把大量文件分成多份并分别保存在不同的子文件夹中

; ========== 此AHK脚本从此行开始 ==========
; 批量将子文件夹中的多个文件按指定数量分配到多个文件夹里
; 访问存放过多文件的文件夹时会速度缓慢或者电脑卡死
; 所以有必要把大量文件按指定数量分成多份并分别移动到不同的子文件夹中

#SingleInstance,force
loop,5
{
	DetectHiddenWindows,On
	Sleep,5
	IfWinExist,QQ595076941_fenlei
		ExitApp
}
Gui, Show, Hide,QQ595076941_fenlei
runwith("admin","ansi")   ;强制自身以 ansi + 管理员权限 运行。
#Persistent
; #NoTrayIcon
DetectHiddenWindows,On
SetTitleMatchMode,2
; ========== 此行是此AutoHotkey脚本的代码块段落分隔行 ==========
;~ 在大批量移动文件之前必需先询问一下
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%\!NumberFiles

; 文件夹编号
global 	 newf
; 指定每个文件夹的文件数量
global 	 numf
; 文件总数量
global 	 conf

newf=0
numf=0
conf=0

; 新建第1个空文件夹
IfNotExist,%A_ScriptDir%\!NumberFiles\New%newf%
{
	FileCreateDir,%A_ScriptDir%\!NumberFiles\New%newf%
}

; 递归遍历穷举文件夹和子文件夹中的文件
loop,Files,%A_ScriptDir%\F\*.*,R
{
	IfEqual,%numf%,18
	{
		numf=0
		newf=%newf%+1
		FileCreateDir,%A_ScriptDir%\!NumberFiles\New%newf%
	}

	IfEqual,A_ScriptFullPath,A_LoopFileFullPath
	{
		continue
	}

	FileMove,%A_LoopFileFullPath%,%A_ScriptDir%\!NumberFiles\New%newf%,0
	conf=%A_Index%
}

MsgBox,整理完成 共 %conf% 个文件 请注意检查!

return

; ========== 此行是此AutoHotkey脚本的代码块段落分隔行 ==========
; 强制自身进程以 管理员权限 或 普通权限 或 ANSI 或 U32 或 U64 版本运行。
; 例1: runwith("admin","u32") 强制自身以 u32 + 管理员权限 运行。
; 例2: runwith("","ansi")     强制自身以 ansi 版本运行(权限不变)。
; 例3: runwith("normal")      强制自身以 普通权限 运行(版本不变)。
RunWith(RunAsAdmin:="Default", ANSI_U32_U64:="Default")
{
	; 格式化预期的模式
	switch, RunAsAdmin
	{
		case "Normal","Standard","No","0":		RunAsAdmin:=0
		case "Admin","Yes","1":								RunAsAdmin:=1
		case "default":												RunAsAdmin:=A_IsAdmin
default:															RunAsAdmin:=A_IsAdmin
	}
switch, ANSI_U32_U64
{
	case "A32","ANSI","A":								ANSI_U32_U64:="AutoHotkeyA32.exe"
	case "U32","X32","32":								ANSI_U32_U64:="AutoHotkeyU32.exe"
	case "U64","X64","64":								ANSI_U32_U64:="AutoHotkeyU64.exe"
	case "default":												ANSI_U32_U64:="AutoHotkey.exe"
default:															ANSI_U32_U64:="AutoHotkey.exe"
	}
; 获取传递给 “.ahk” 的用户参数(不是 /restart 之类传递给 “.exe” 的开关参数)
for k, v in A_Args
{
	if (RunAsAdmin=1)
	{
		; 转义所有的引号与转义符号
		v:=StrReplace(v, "\", "\\")
		v:=StrReplace(v, """", "\""")
		; 无论参数中是否有空格,都给参数两边加上引号
		; Run       的内引号是 "
		ScriptParameters  .= (ScriptParameters="") ? """" v """" : A_Space """" v """"
	}
	else
	{
		; 转义所有的引号与转义符号
		; 注意要转义两次 Run 和 RunAs.exe
		v:=StrReplace(v, "\", "\\")
		v:=StrReplace(v, """", "\""")
		v:=StrReplace(v, "\", "\\")
		v:=StrReplace(v, """", "\""")
		; 无论参数中是否有空格,都给参数两边加上引号
		; RunAs.exe 的内引号是 \"
		ScriptParameters .= (ScriptParameters="") ? "\""" v "\""" : A_Space "\""" v "\"""
	}
}
; 判断当前 exe 是什么版本
if (!A_IsUnicode)
	RunningEXE:="AutoHotkeyA32.exe"
else if (A_PtrSize=4)
	RunningEXE:="AutoHotkeyU32.exe"
else if (A_PtrSize=8)
	RunningEXE:="AutoHotkeyU64.exe"
; 运行模式与预期相同,则直接返回。 ANSI_U32_U64="AutoHotkey.exe" 代表不对 ahk 版本做要求。
if (A_IsAdmin=RunAsAdmin and (ANSI_U32_U64="AutoHotkey.exe" or ANSI_U32_U64=RunningEXE))
	return
; 如果当前已经是使用 /restart 参数重启的进程,则报错避免反复重启导致死循环。
else if (RegExMatch(DllCall("GetCommandLine", "str"), " /restart(?!\S)"))
{
	预期权限:=(RunAsAdmin=1) ? "管理员权限" : "普通权限"
	当前权限:=(A_IsAdmin=1)  ? "管理员权限" : "普通权限"
	ErrorMessage=
	(LTrim
		预期使用: %ANSI_U32_U64%
		当前使用: %RunningEXE%
		预期权限: %预期权限%
		当前权限: %当前权限%
		程序即将退出。
	)
	MsgBox 0x40030, 运行状态与预期不一致, %ErrorMessage%
	ExitApp
}
else
{
	; 获取 AutoHotkey.exe 的路径
	SplitPath, A_AhkPath, , Dir
	if (RunAsAdmin=0)
	{
		; 强制普通权限运行
		switch, A_IsCompiled
		{
			; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
			; 工作目录不用单独指定,默认使用 A_WorkingDir 。
			case, "1": Run, RunAs.exe /trustlevel:0x20000 "\"%A_ScriptFullPath%\" /restart %ScriptParameters%",, Hide
default: Run, RunAs.exe /trustlevel:0x20000 "\"%Dir%\%ANSI_U32_U64%\" /restart \"%A_ScriptFullPath%\" %ScriptParameters%",, Hide
	}
}
else
{
	; 强制管理员权限运行
	switch, A_IsCompiled
	{
		; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
		; 工作目录不用单独指定,默认使用 A_WorkingDir 。
		case, "1": Run, *RunAs "%A_ScriptFullPath%" /restart %ScriptParameters%
default: Run, *RunAs "%Dir%\%ANSI_U32_U64%" /restart "%A_ScriptFullPath%" %ScriptParameters%
	}
}
ExitApp
}
}
; ========== 此AutoHotkey脚本到此行结束 ==========

 

 @echo off&setlocal enabledelayedexpansion
::文件分类管理:按每18个文件装进一个文件夹整理。
echo;&echo;    开始整理……&echo;
set newf=0
set numf=0
set conf=0
if not exist New!newf! md New!newf!
for /f "tokens=*" %%a in ('dir /b /a-d') do (
    if !numf! geq 18 set numf=0&set /a newf+=1&md New!newf!
    if not "%%~na"=="%~n0" copy "%%~a" New!newf!&set /a numf+=1
    set /a conf=!newf!*18+!numf!
)
echo;&echo;    整理完成,共 !conf! 个文件,请注意检查!&pause>nul

 

 

; ========== 此bat批处理脚本从此行开始 ==========

rem 批量将多个文件按指定数量分配到多个文件夹里的批处理脚本文件

@echo off
setlocal enabledelayedexpansion
set fileNum=1000
set fileID=0
set folderPre=MyFolder
set folderSuf=0
for /f "delims=" %%a in ('dir /b /a-d') do (
    set /a mod=!fileID! %% %fileNum%
    if "!mod!" == "0" (
        set /a folderSuf+=1
        md "%folderPre%_!folderSuf!"
    )
    set /a fileID+=1
    move "%%a" "%folderPre%_!folderSuf!\"
rem  copy "%%a" "%folderPre%_!folderSuf!\"
)

; ========== 此bat批处理脚本到此行结束 ==========

 

第7步:上传整理好的文件夹

使用 WinSCP  版本: 5.21.2 异地远程连接群晖NAS的WebDAV Server(DDNS动态域名解析,无线路由器服务端口映射转发)并上传整理好的文件夹 \应整理的文件 到

Synology 群晖 NAS

 

第8步:文档、表格和图片等办公文件的管理方案

一、键盘输入、经常使用或者需要与他人共享的文件保存在用微信扫码登录的" 金山文档 " 客户端。

二、除了金山文档中的文档表格外,其他文件保存在

Synology 群晖 NAS

三、需要高速读写编辑的文件(例如:视频素材、大型软件源代码等等)保存在 SanDisk 闪迪 E81 移动固态硬盘 4TB 并用 GoodSync Version 12.0.2.2 定时单向同步上传文件到 Synology 群晖 NAS

除了以上3个文件筛选分类整理收纳保存位置以外,严禁把文件保存在其他位置(电脑桌面等位置只可用于临时存放文件),所有电子文件都集中统一筛选分类整理收纳保存在以上3个位置。

电子文件的筛选分类整理收纳保存方式方法应当以能够在今后快速高效的找到并使用所需文件为标准。

能够快速高效的找到文件的存放方式方法就是好的文件保存方案。

合情合理的,合适恰当的,让人看着舒服舒适的文件保存方法就是好的文件保存方案。

https://www.autoahk.com/?p=43829

https://www.cnblogs.com/delphixx/p/16699537.html

https://yuncode.net/code/c_63254b5804d0a7

 

第9步:清理以上3个位置以外的,其他位置的文档、表格和图片等办公文件

所有文档、表格和图片等办公文件只保存在以上3个位置,其他位置不保存2文档表格图片,原来分散保存的文档表格图片应当彻底整理并清理删除。

; ========== 此AutoHotkey脚本从此行开始 ==========

; 批量删除群晖NAS中的办公文档、办公表格和办公图片(*.doc;*.docx;*.xls;*.xlsx;*.jpg;*.png)

#SingleInstance,Ignore
loop,5
{
	DetectHiddenWindows,On
	Sleep,5
	IfWinExist,QQ595076941_fenlei
		ExitApp
}
Gui, Show, Hide,QQ595076941_fenlei
runwith("admin","ansi")   ;强制自身以 ansi + 管理员权限 运行。
#Persistent
; #NoTrayIcon
DetectHiddenWindows,On
SetTitleMatchMode,2

; ========== 此行是此AutoHotkey脚本的代码块段落分隔行 ==========

; 批量操作之前请仔细检查一下,防止误删误改丢失重要文件

;~ 在大批量删除文件之前必需先询问一下
MsgBox, 4, , "Loop All  Files  in ScriptDir"`n"是否立即批量删除群晖NAS中的办公文档和办公表格?"`n`ncontinue?
IfMsgBox, No
ExitApp

;~ 在大批量删除文件之前必需再次询问一下
MsgBox, 4, , "Loop All  Files  in ScriptDir"`n"是否立即批量删除群晖NAS中的办公文档和办公表格?"`n`ncontinue?
IfMsgBox, No
	ExitApp


loop,6
{
	loop,Files,Z:\020-硬盘5-Hyper-Backup单一版本单向备份到此文件夹-Basic池\*,R ;递归遍历穷举文件夹和子文件夹中的文件
	{
		; 可在 loop,Files 文件循环中使用的特殊变量请阅读 AutoHotkey 中文帮助 CHM 文档
		; 需要时,可以使用表达式对获取的变量做进一步计算转换加工运算
		; A_LoopFileName 当前获取的文件或文件夹的名称(不含路径).
		; A_LoopFileExt 当前文件的扩展名(例如 TXT, DOC 或 EXE). 不含句点(.).
		; A_LoopFilePath 当前获取的文件/文件夹的路径和名称.
		if((A_LoopFileExt="docx") or(A_LoopFileExt="xlsx") or	(A_LoopFileExt="doc") or(A_LoopFileExt="xls") or	(A_LoopFileExt="jpg") or(A_LoopFileExt="png"))
		{
			; FileMove
			FileDelete,%A_LoopFileFullPath%
		}
}
;
loop,Files,Z:\030-硬盘6-Cloud-Sync单向同步到此文件夹-Basic池\*,R ;递归遍历穷举文件夹和子文件夹中的文件
{
	if((A_LoopFileExt="docx") or(A_LoopFileExt="xlsx") or	(A_LoopFileExt="doc") or(A_LoopFileExt="xls") or	(A_LoopFileExt="jpg") or(A_LoopFileExt="png"))
	{
		; FileMove
		FileDelete,%A_LoopFileFullPath%
	}
}
}
MsgBox, 64, , %A_ScriptDir%"All  Files  in ScriptDir is Classifyed And Arranged"`n"恭喜你, 已经批量删除Synology群晖NAS中的办公文档、办公表格和办公图片"!
return


; ========== 此行是此AutoHotkey脚本的代码块段落分隔行 ==========

; 强制自身进程以 管理员权限 或 普通权限 或 ANSI 或 U32 或 U64 版本运行。
; 例1: runwith("admin","u32") 强制自身以 u32 + 管理员权限 运行。
; 例2: runwith("","ansi")     强制自身以 ansi 版本运行(权限不变)。
; 例3: runwith("normal")      强制自身以 普通权限 运行(版本不变)。
RunWith(RunAsAdmin:="Default", ANSI_U32_U64:="Default")
{
	; 格式化预期的模式
	switch, RunAsAdmin
	{
		case "Normal","Standard","No","0":		RunAsAdmin:=0
		case "Admin","Yes","1":								RunAsAdmin:=1
		case "default":												RunAsAdmin:=A_IsAdmin
default:															RunAsAdmin:=A_IsAdmin
	}
switch, ANSI_U32_U64
{
	case "A32","ANSI","A":								ANSI_U32_U64:="AutoHotkeyA32.exe"
	case "U32","X32","32":								ANSI_U32_U64:="AutoHotkeyU32.exe"
	case "U64","X64","64":								ANSI_U32_U64:="AutoHotkeyU64.exe"
	case "default":												ANSI_U32_U64:="AutoHotkey.exe"
default:															ANSI_U32_U64:="AutoHotkey.exe"
	}
; 获取传递给 “.ahk” 的用户参数(不是 /restart 之类传递给 “.exe” 的开关参数)
for k, v in A_Args
{
	if (RunAsAdmin=1)
	{
		; 转义所有的引号与转义符号
		v:=StrReplace(v, "\", "\\")
		v:=StrReplace(v, """", "\""")
		; 无论参数中是否有空格,都给参数两边加上引号
		; Run       的内引号是 "
		ScriptParameters  .= (ScriptParameters="") ? """" v """" : A_Space """" v """"
	}
	else
	{
		; 转义所有的引号与转义符号
		; 注意要转义两次 Run 和 RunAs.exe
		v:=StrReplace(v, "\", "\\")
		v:=StrReplace(v, """", "\""")
		v:=StrReplace(v, "\", "\\")
		v:=StrReplace(v, """", "\""")
		; 无论参数中是否有空格,都给参数两边加上引号
		; RunAs.exe 的内引号是 \"
		ScriptParameters .= (ScriptParameters="") ? "\""" v "\""" : A_Space "\""" v "\"""
	}
}
; 判断当前 exe 是什么版本
if (!A_IsUnicode)
	RunningEXE:="AutoHotkeyA32.exe"
else if (A_PtrSize=4)
	RunningEXE:="AutoHotkeyU32.exe"
else if (A_PtrSize=8)
	RunningEXE:="AutoHotkeyU64.exe"
; 运行模式与预期相同,则直接返回。 ANSI_U32_U64="AutoHotkey.exe" 代表不对 ahk 版本做要求。
if (A_IsAdmin=RunAsAdmin and (ANSI_U32_U64="AutoHotkey.exe" or ANSI_U32_U64=RunningEXE))
	return
; 如果当前已经是使用 /restart 参数重启的进程,则报错避免反复重启导致死循环。
else if (RegExMatch(DllCall("GetCommandLine", "str"), " /restart(?!\S)"))
{
	预期权限:=(RunAsAdmin=1) ? "管理员权限" : "普通权限"
	当前权限:=(A_IsAdmin=1)  ? "管理员权限" : "普通权限"
	ErrorMessage=
	(LTrim
		预期使用: %ANSI_U32_U64%
		当前使用: %RunningEXE%
		预期权限: %预期权限%
		当前权限: %当前权限%
		程序即将退出。
	)
	MsgBox 0x40030, 运行状态与预期不一致, %ErrorMessage%
	ExitApp
}
else
{
	; 获取 AutoHotkey.exe 的路径
	SplitPath, A_AhkPath, , Dir
	if (RunAsAdmin=0)
	{
		; 强制普通权限运行
		switch, A_IsCompiled
		{
			; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
			; 工作目录不用单独指定,默认使用 A_WorkingDir 。
			case, "1": Run, RunAs.exe /trustlevel:0x20000 "\"%A_ScriptFullPath%\" /restart %ScriptParameters%",, Hide
default: Run, RunAs.exe /trustlevel:0x20000 "\"%Dir%\%ANSI_U32_U64%\" /restart \"%A_ScriptFullPath%\" %ScriptParameters%",, Hide
	}
}
else
{
	; 强制管理员权限运行
	switch, A_IsCompiled
	{
		; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
		; 工作目录不用单独指定,默认使用 A_WorkingDir 。
		case, "1": Run, *RunAs "%A_ScriptFullPath%" /restart %ScriptParameters%
default: Run, *RunAs "%Dir%\%ANSI_U32_U64%" /restart "%A_ScriptFullPath%" %ScriptParameters%
	}
}
ExitApp
}
}

; ========== 此AutoHotkey脚本到此行结束 ==========

给TA捐赠
共{{data.count}}人
人已捐赠
其他

极速翻译器-有道 重制版

2022-9-16 16:28:03

其他

用Microsoft_Visual_Basic_6.0_SP6_中文企业版_Sirk_Mini模仿实现AutoHotkey的部分功能-2022年9月21日-(草稿版)

2022-9-21 13:23:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
有新私信 私信列表
搜索