本帖最后由 zaqmlp 于 2019-8-2 13:28 编辑
- @echo off&setlocal enabledelayedexpansion
- :main
- color 0c
- if not exist %temp%\~found md %temp%\~found||(
- call:_colstr 0c:"文件夹创建失败,按任意键退出。"&pause>nul&exit
- )
- set "file=0"&set "s="&set "e="&set "t="&set "k="&set "n="&set "d="&set "y="
- :return
- set "num=%random%"
- if exist %temp%\~found\found_%num%.log (echo 发现同名文件[found_%num%.log],正在更换,如长时间未能成功请清理文件夹 [%temp%\~found] 。&title 发现同名文件[found_%num%.log],正在更换可用文件。&cls&goto return)
- cls
- cd .>%temp%\~found\data_%num%.log
- title 全盘查找。
- set "var="
- echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.
- call:_colstr 0f:"要查找的文件 [需添加文件扩展名,如查找同类文件可使用通配符]";\t
- echo *.*
- echo.
- call:_colstr 0e:"禁止输入以下等特殊符号:"
- echo [ ^| / \^" ^< ^> ? : * ]
- echo.
- call:_colstr 08:"%num%";0a:"在这里输入需要查找的文件:"
- set /p "var="
- echo %var%|find /i "*." >nul && set "int=同类" || set "int=指定"
- echo %var%|find /i " " >nul && (echo.&echo 值不能为空或输入的字符串内含有空格。&pause>nul&goto:main)
- if "%var%"=="/del*" (echo 正在执行删除操作,请稍后。&del %temp%\~found&goto main) else (if "%var%"=="/help" (goto help) else (if "%var%"=="<" (goto main) else (if "%var%"==">" (goto main) else (if "%var%"=="|" (goto main) else (if "%var%"=="*" (goto main) else (if "%var%"==":" (goto main) else (if "%var%"=="/" (goto main) else (if "%var%"=="\" (goto main) else (if "%var%"=="?" (goto main) else (if "%var%"=="/exit" (exit)))))))))))
-
-
-
- call:k
- color 00
- title 正在查找%var%中... ...
- set "#time=:::::::::::::::::::: %date% / %time% Start ::::::::::::::::::::"
- echo.
- color 07&echo 正在全盘查找文件 [ %var% ]
- echo.
- for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
- if exist %%a:\ (
- cd /d %%a:\
- for /f "delims=" %%b in ('dir /s /a-d /b "%var%" 2^>nul') do (
- set /a "file+=1"
- if exist "%%b" (
- echo %%~zb^|"%%b">>%temp%\~found\data_%num%.log))))
- call:k
- set/a D=D2-D1,K=K2-K1
- if %K% leq 0 set/a K+=8640000,D-=1
- if %D% leq 0 (set "s=%K%0毫秒")else set "s=%D%天%K%0毫秒"
-
- >"%tmp%\t.t" echo;var list=WSH.StdIn.ReadAll().replace(/^^\s*^|\s*$/g,'').split(/[\r\n]+/);
- >>"%tmp%\t.t" echo;list.sort(function(a,b){return Number(b.split('^|')[0])-Number(a.split('^|')[0])});
- >>"%tmp%\t.t" echo;for(var i=0;i^<list.length;i++){var line=list[i].split('^|');WSH.echo('文件已找到,大小为['+getsize(Number(line[0]))+']['+line[1]+']');}
- >>"%tmp%\t.t" echo;function getsize(s){var size='';if(s^>=1073741824){size = (s/1073741824).toFixed(2) + 'GB';}else if(s^>=1048576){size = (s/1048576).toFixed(2) + 'MB';}else if(s^>=1024){size = (s/1024).toFixed(2) + 'KB';}else {size = s + 'B';};return size;}
-
- pushd %temp%\~found
- rem ren found_%num%.log data_%num%.log
- (
- echo.
- echo %#time%
- echo.
- echo 查找%int%文件 [ %var% ],共找到 [ %file% ] 个文件,耗时 [ %s% ] 。
- )>found_%num%.log
- type data_%num%.log|cscript -nologo -e:jscript "%tmp%\t.t">>found_%num%.log
- echo.>>found_%num%.log
-
- find "文件已找到" found_%num%.log >nul||(
- echo 没有找到任何文件,输入 [ /help ] 获取帮助。
- echo.
- )>>found_%num%.log
-
- echo ::::::::::::::::::: %date% / %time% Finished :::::::::::::::::::>>found_%num%.log
- title 共找到 [ %file% ] 个文件,耗时 [ %s% ] 已生成文本报告。
- type %temp%\~found\found_%num%.log&color 0f
- echo.
- call:_colstr 0e:"正在拷贝路径至粘贴板,请稍后。";\n;&mshta vbscript:clipboarddata.setdata("text","%temp%\~found\found_%num%.log")(close)
- echo.
- call:_colstr 查找完毕,共找到;\t;[;\t;0a:"%file%";\t;];\t;个文件,耗时;\t;[;\t;0a:"%s%";\t;];\t;0f:"已生成文本报告。";\n;
- echo.
- call:_colstr 路径;\t;[ "%temp%\~found\found_%num%.log" ];\t;0e:"已复制。";\n;
- echo.&echo.
- call:_colstr \t;\t;\t;\t;\t;\t;\t;\t;\t;\t;\t;\t;\t;\t;J;0b:"e";0e:"ff";0f:"r";0a:"e";0d:"y";06:"2";05:"9";04:"7";03:"1";f8:"@outlook.com";\t;\t;
- echo.&echo.&pause>nul
- call:_colstr 0e:"正在清理粘贴板,请稍后。";&mshta.exe "javascript:clipboardData.clearData();close();"
- popd&goto main
- :help
- title 帮助。
- cls&echo.
-
- call:_colstr 0e:"正在计算相关数据,请稍后。";\n;
- set "cnt=0"&set "f="&set "d="
- for /f "delims=" %%i in ('dir/b/a-d "%temp%\~found\*.log" 2^>nul') do set /a "cnt+=1"
- for /f "tokens=3 delims= " %%i in ('dir /s /a /-c "%temp%\~found" ^|findstr 个文件') do (set f=%%i)
- if %f% gtr 1024 (set /a "f>>=10"&set "d=KB") else (if %f% gtr 1024 (set /a "f>>=10"&set "d=MB"))
- cls
- echo.&echo.
- call:_colstr 0e:"禁止输入以下等特殊符号:"
- echo [ ^| / \^" ^< ^> ? : * ]
- echo.
- call:_colstr 0f:"查找时输入尽量正确的";0e:"文件名";+;0e:"扩展名";0f:"如";0f:"[";0a:"WeChat.exe";0f:"]";\n;
- echo.
- call:_colstr 0f:"如需查找同类文件如图片" [ *.png/*.jpg ] ;0f:"可使用";0e:"通配符" 0f:"["; * ;0f:"]" . ;0f:"[" 文件扩展名 ;0f:"]";\n
- echo.
- call:_colstr 0f:"共找到";\t;0f:"[";\t;0a:"%cnt%";\t;0f:"]";\t;0f:"个报告文件,占用空间";\t;0f:"[";\t;0e:"%f%%d%";\t;0f:"]";\t; ;0f:"如需删除可在界面输入";\t;/del*;\n
- echo.
- call:_colstr 0f:"文件记录位于";\t;[;\t;%temp%\~found;\t;];\t;0f:"格式为";\t;*.log;\n
- echo.&echo.
- call:_colstr 0f:"如需额外帮助请联系邮箱:";J;0b:"e";0e:"ff";0f:"r";0a:"e";0d:"y";06:"2";05:"9";04:"7";03:"1";f8:"@outlook.com";\t;\t;\t;\t;0f:"联系微信:";J;0b:"e";0e:"ff";0f:"r";0a:"e";0d:"y";06:"2";05:"9";04:"7";03:"1";\n;
- echo.
- echo 按任意键返回。
- echo.
- pause>nul&goto main
-
- rem /*--------- colstr 函数 -------------
- rem /*\?"<:>|
- :_colstr [^<colorcode^>:"<color str>"^|"<common str>"^|^<escape Char^>];...
- for /f "tokens=1* delims=:" %%a in ("%~1")do (
- if %%a:%%b.==%%a:"%%~b". (set col=%%a
- for %%z in ("LBlue=9";"LGreen=A";"LAqua=B";"LRed=C";"LPurple=D";
- "LYellow=E";"LWhite=F";"Black=0";"Blue=1";"Green=2";
- "Aqua=3";"Red=4";"Purple=5";"Yellow=6";"White=7";"Gray=8";
- )do set col=!col:%%~z!
- if exist "%%~b?" del/a/q "%%~b?"2>nul
- set/p= <nul>"%%~b"2>nul&findstr/a:!col! .* "%%~b?"2>nul 3>&2
- ) else if %1==\n (echo.
- ) else if %1==\b (set/p=<nul
- ) else if %1==\q (set/p=""^"<nul
- ) else if %1==\t (set/p= <nul &rem 注意=后面不是空格,是制表符
- ) else (set/p"=%~1"<nul)
- )&(if %2. neq . (shift&endlocal&goto:_colstr))&exit/b
- rem ------------------------------------*/
-
- :k
- set "E=%date%"&set "T=%time%"&set "K=%time:~0,2%"&set/a "N+=1"
- set/a D%N%=1%E:~8,2%%%100,M=1%E:~5,2%%%100-1,Y=%E:~0,4%,"K%N%=%K: =%*360000+(1%T:~3,2%-100)*6000+(1%T:~6,2%-100)*100+1%T:~9,2%-100"
- for /l %%a in (1,1,%M%) do set/a "K=^!(%%a-4)|^!(%%a-6)|^!(%%a-9)|^!(%%a-11)","D%N%+=^!(%%a-2)*(28+^!((^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)))+K*30+(^!^!(%%a-2)&^!K)*31"
- set/a D%N%+=(Y-1)*365+Y/4-Y/100+Y/400
复制代码
|