因为很多时候需要把素材放到桌面上方便使用,就造成了我的桌面非常之混乱,于是写了一个小bat脚本用于整理桌面。
功能:把桌面上的文件(lnk除外)按照日期归档到指定的归档文件夹内。
代码:
@echo offset title_T=桌面便捷整理工具 --By:cat9999sss 文件修改时间:%~t0title %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\logset config_sort_file=%AllUsersProfile%\Auto_Sort_Desktop_files\config.inirem 获取下桌面路径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_configset ERRORLEVEL=choice /C YN /M "要重新配置请在5s内输入Y" /T 5 /D Nif "%ERRORLEVEL%"=="1" goto re_configgoto start_main:first_Useclsecho.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_configif "%config_style%"=="2" goto hands_configgoto config_error:default_configecho auto_sort_dir=d:\原桌面 >>%config_sort_file%goto start_main:hands_configecho .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 EnableDelayedExpansionfor %%i in (%code%) do (set code_T=%%iif "!input_disk!"=="!code_T:~0,1!" set input_disk=!code_T:~1,1!)for %%i in (%code%) do (set code_T=%%iif "!system_disk!"=="!code_T:~0,1!" set system_disk=!code_T:~1,1!)setlocal DisableDelayedExpansionif "%input_disk%"=="%system_disk%" goto dir_errorecho auto_sort_dir=%hands_config_dir% >>%config_sort_file%goto start_main:start_maingoto read_config:start_move_fileif 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 *.lnkrobocopy %desktop_dir%\ %auto_sort_dir%\%y%\%y%-%m%-%d%\ /V /LOG+:%config_sort_log%\%y%-%m%-%d%.log /E /MOVE /XF *.lnkif 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,301set LnkFile=%desktop_dir%\归档文件夹call :CreateShort "%SrcFile%" "%LnkFile%" "%Icon%"set SrcFile=%~dpnx0set Icon=%systemroot%\system32\shell32.dll,80set LnkFile=%desktop_dir%\开始归档桌面文件call :CreateShort "%SrcFile%" "%LnkFile%" "%Icon%"goto handle_logfile:handle_logfilerem 啥?这不是只删除.log文件啊,上面你说删除所有的啊......呵呵哒,吓唬你不行啊del /s /q /f %config_sort_log%\delete\*.log >>%config_sort_log%\%y%-%m%-%d%.logrem 将30天前的文件移动到delete文件夹robocopy %config_sort_log% %config_sort_log%\delete /E /MOVE /MINAGE:30 /LEV:1goto good_job:config_errorclsecho .echo ========================配置模式选择错误==============================echo 很抱歉,配置模式选择错误,请重新输入echo 你的输入为: %config_style%echo ======================================================================ping 127.0.0.1 -n 3 >nulgoto first_Use:dir_errorclsecho .echo ========================归档路径配置错误==============================echo 很抱歉,归档路径选择错误,不允许使用系统盘,请重新配置echo 你的配置的文件夹为: %hands_config_dir%echo ======================================================================ping 127.0.0.1 -n 3 >nulgoto first_Use:read_configsetlocal EnableDelayedExpansionfor /f "tokens=2 delims==" %%a in ('find "auto_sort_dir" "%config_sort_file%"') do (set auto_sort_dir=%%a)setlocal DisableDelayedExpansiongoto del_space:del_spaceset 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):CreateShortmshta 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_configclssetlocal EnableDelayedExpansionfor /f "tokens=2 delims==" %%a in ('find "auto_sort_dir" "%config_sort_file%"') do (set auto_sort_dir=%%a)setlocal DisableDelayedExpansionecho .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_Useif "%re_config_num%"=="2" goto start_main:good_jobclsecho .echo ========================归档完毕==============================echo 已归档完毕echo 程序将在10s后退出,欢迎再次使用echo ==============================================================echo .ping 127.0.0.1 -n 10 >nulgoto exit_me:exit_meexit喜欢的复制粘贴改为*.bat使用就可以了。
