之前写的一个整理桌面的批处理

文章第一次发在批处理之家,文中从互联网借鉴了很多好的方法,在这里就不一一列举了 +_+

使用方法:
复制下面的代码,粘贴到文本文档,然后重命名文本文档后缀为bat就好了(xxx.txt--->xxxx.bat)
建议将文件放在非系统盘的文件夹下面,目录无所谓,双击之后脚本会自动产生桌面的快捷方式

代码部分

@echo off
set title_T=桌面便捷整理工具  --By:landwind@简书 文件修改时间:%~t0
title %title_T%
rem 格式化时间
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (
  set tt=%%a
)
set Today=%tt:~0,4%-%tt:~4,2%-%tt:~6,2%
set Time_T=%tt:~8,2%:%tt:~10,2%:%tt:~12,2%
set y=%Today:~0,4%
set m=%Today:~5,2%
set d=%Today:~8,2%
set t=%Time_T:~0,8%
set t=%t::=.%
set config_sort_dir=%AllUsersProfile%\Auto_Sort_Desktop_files\
set config_sort_log=%AllUsersProfile%\Auto_Sort_Desktop_files\log
set config_sort_file=%AllUsersProfile%\Auto_Sort_Desktop_files\config.ini
rem 获取下桌面路径
for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Desktop"') do (
set desktop_dir=%%j
)

rem 判断配置文件夹以及配置文件是否存在,不存在创建
if not exist "%config_sort_dir%" mkdir "%config_sort_dir%"
if not exist "%config_sort_log%" mkdir "%config_sort_log%
if not exist "%config_sort_log%\delete" mkdir "%config_sort_log%\delete"
if not exist "%config_sort_file%" (goto first_Use) else (goto choice_config)
:choice_config
set ERRORLEVEL=
choice /C YN /M "要重新配置请在5s内输入Y" /T 5 /D N
if "%ERRORLEVEL%"=="1" goto re_config
goto start_main

:first_Use
cls
echo.
echo =====================欢迎试用桌面自动整理工具=========================
echo        1.检测到配置文件不存在,请对本工具进行一个简单的配置
echo        2.可以直接拖放文件夹到本窗口,CMD会自动获取文件夹路径
echo        3.只要选定一个文件夹,每次打开工具,工具会将桌面文件移动到
echo          设定的文件夹下面,按照 选定文件夹\年\年-月-日\具体文件 
echo          这种形式文件夹下面.
echo        4.配置文件在%config_sort_dir%目录底下,日志也在此目录
echo        5.关于日志,最多保存最近30天的文件,超过30天的,会移动到
echo          配置文件夹log\delete目录下面,下次运行本工具的时候会
echo          删除里面的所有文件,so不要放东西进去奥...
echo                             欢迎试用.
echo ======================================================================
echo.
echo ==========================配置模式选择================================
echo        1.使用默认配置,自动归档桌面文件和文件夹到D:\原桌面
echo        2.手工设定归档文件架
echo ======================================================================
echo.
set /p config_style=请输入要使用的配置模式前面的数字,回车确认:
set config_style=%config_style: =%
if "%config_style%"=="1" goto default_config
if "%config_style%"=="2" goto hands_config
goto config_error

:default_config
echo auto_sort_dir=d:\原桌面 >>%config_sort_file%
goto start_main
:hands_config
echo .
echo 小提示:直接拖放文件夹到本窗口可以直接获取文件夹路径
set /p hands_config_dir=请输入归档文件夹:
rem 判断先是不是在系统盘,如果是,那就提示,这里就不判断是不是在桌面了,不好处理...关键字不能用,取前xx位判断貌似不太准,鬼知道用户的用户名多长......
set input_disk=%hands_config_dir: =%
set input_disk=%input_disk:~0,1%
set system_disk=%systemroot:~0,1%
rem 悲剧啊,找了别人写的转换大小写的批处理,活活看不懂T_T....用笨方法吧...
set "code=aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ"
setlocal EnableDelayedExpansion
for %%i in (%code%) do (
set code_T=%%i
if "!input_disk!"=="!code_T:~0,1!" set input_disk=!code_T:~1,1!
)
for %%i in (%code%) do (
set code_T=%%i
if "!system_disk!"=="!code_T:~0,1!" set system_disk=!code_T:~1,1!
)
setlocal DisableDelayedExpansion

if "%input_disk%"=="%system_disk%" goto dir_error
echo auto_sort_dir=%hands_config_dir% >>%config_sort_file%
goto start_main

:start_main
goto read_config
:start_move_file
if not exist "%auto_sort_dir%" mkdir "%auto_sort_dir%"
if not exist "%auto_sort_dir%\%y%\" mkdir "%auto_sort_dir%\%y%\"
if not exist "%auto_sort_dir%\%y%\%y%-%m%-%d%\" mkdir "%auto_sort_dir%\%y%\%y%-%m%-%d%\"
echo robocopy %desktop_dir%\ %auto_sort_dir%\%y%\%y%-%m%-%d%\ /E /MOVE  /XF *.lnk
robocopy %desktop_dir%\ %auto_sort_dir%\%y%\%y%-%m%-%d%\ /V /LOG+:%config_sort_log%\%y%-%m%-%d%.log /E /MOVE  /XF *.lnk
if exist "%desktop_dir%\归档文件夹.lnk" del /q /f "%desktop_dir%\归档文件夹.lnk"
if exist "%desktop_dir%\开始归档桌面文件.lnk" del /q /f "%desktop_dir%\开始归档桌面文件.lnk"

set SrcFile=%auto_sort_dir%\%y%\
set Icon=%systemroot%\System32\shell32.dll,301
set LnkFile=%desktop_dir%\归档文件夹
call :CreateShort "%SrcFile%" "%LnkFile%" "%Icon%"
set SrcFile=%~dpnx0
set Icon=%systemroot%\system32\shell32.dll,80
set LnkFile=%desktop_dir%\开始归档桌面文件
call :CreateShort "%SrcFile%" "%LnkFile%" "%Icon%"

goto handle_logfile



:handle_logfile
rem 啥?这不是只删除.log文件啊,上面你说删除所有的啊......呵呵哒,吓唬你不行啊
del /s /q /f %config_sort_log%\delete\*.log >>%config_sort_log%\%y%-%m%-%d%.log
rem 将30天前的文件移动到delete文件夹
robocopy %config_sort_log% %config_sort_log%\delete /E /MOVE /MINAGE:30 /LEV:1
goto good_job

:config_error
cls
echo .
echo ========================配置模式选择错误==============================
echo        很抱歉,配置模式选择错误,请重新输入
echo        你的输入为: %config_style%
echo ======================================================================
ping 127.0.0.1 -n 3 >nul
goto first_Use

:dir_error
cls
echo .
echo ========================归档路径配置错误==============================
echo        很抱歉,归档路径选择错误,不允许使用系统盘,请重新配置
echo        你的配置的文件夹为: %hands_config_dir%
echo ======================================================================
ping 127.0.0.1 -n 3 >nul
goto first_Use

:read_config
setlocal EnableDelayedExpansion
for /f "tokens=2 delims==" %%a in ('find "auto_sort_dir" "%config_sort_file%"') do (
set auto_sort_dir=%%a
)
setlocal DisableDelayedExpansion
goto del_space
:del_space
set space=%auto_sort_dir:~-1%
if "%space%" NEQ " " (goto start_move_file) else (
set auto_sort_dir=%auto_sort_dir:~0,-1%
goto del_space
)
:CreateShort
mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%~2.lnk""):b.TargetPath=""%~1"":b.IconLocation=""%~3"":b.WorkingDirectory=""%~dp1"":b.Save:close")
goto :eof
:re_config
cls
setlocal EnableDelayedExpansion
for /f "tokens=2 delims==" %%a in ('find "auto_sort_dir" "%config_sort_file%"') do (
set auto_sort_dir=%%a
)
setlocal DisableDelayedExpansion
echo .
echo ========================当前配置==============================
echo           当前配置目录:%auto_sort_dir%
echo           1.重新配置
echo           2.呃呃呃,按错了,放我回去
echo ==============================================================
echo .
echo.
set /p re_config_num=请输入要使用的配置模式前面的数字,回车确认:
set re_config_num=%re_config_num: =%
if "%re_config_num%"=="1" goto first_Use
if "%re_config_num%"=="2" goto start_main

:good_job
cls
echo .
echo ========================归档完毕==============================
echo                        已归档完毕
echo              程序将在10s后退出,欢迎再次使用
echo ==============================================================
echo .
ping 127.0.0.1 -n 10 >nul
goto exit_me

:exit_me
exit
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容