用批处理实现文件备份器V2.3

2019-01-30 13:22:15刘景俊


:backup_task
cls
color 1f
title 文件备份器-已存在的备份任务
echo.
at
echo -------------------------------------------------------------------------------
echo.
echo         ╔══════════════════════════════╗
echo         ║ 如果要停止某个备份任务,请输入该任务的ID号,然后按回车即可 ║
echo         ║                                                            ║
echo         ║       多个ID号之间用空格分隔,停止所有计划任务请按 A       ║
echo         ║                                                            ║
echo         ║     退出请按 0 ,返回上一步请按除0、A和ID数字之外的任意键  ║
echo         ╚══════════════════════════════╝
echo.
set ID=
set /p ID=           请输入不再需要的备份任务的ID:
if "%ID%"=="0" exit
if /i "%ID%"=="a" at /delete /yes && (call :del_nouse && goto backup_task)
:: 以下语句的作用是:如果停止了某项备份任务,则检查硬盘上由本程序生成的bat文件中,
:: 不在at任务列表中的有哪些;如果有,则删除该bat,同时删除注册表中对应的字符串值;
:: 如果没有,则不作任何删除操作;
(for %%i in (%ID%) do at %%i /del /yes >nul 2>nul) && (
    call :del_nouse
    goto backup_task
) || goto input_source

rem    =======输入文件保存路径并检测输入是否正确=======
:input_destination
cls
color 1f
title 文件备份器-请输入目标文件路径
echo.
echo.
echo                               ╭────────╮
echo           ╭─────────┤  选择保存位置  ├─────────╮
echo           │                  ╰────────╯                  │
echo           │        操作说明:                                      │
echo           │                                                        │
echo           │            请输入保存位置的绝对路径或者相对路径        │
echo           │                                                        │
echo           │        (注意:必须在半角状态下输入冒号和反斜杠;       │
echo           │                                                        │
echo           │        请勿输入非法的路径名符号),或者把一个已         │
echo           │                                                        │
echo           │        存在的文件夹拖曳至本窗口,然后回车确认。        │
echo           │                                                        │
echo           │          ╭────────────────╮          │
echo           ╰─────┤  查看各磁盘分区剩余空间请按 9  ├─────╯
echo                       ╰────────────────╯
echo.
echo            返回上一步请按 1                                退出请按 0
echo           ──────────────────────────────
echo.
set destination=:
set /p destination=           请输入备份文件的保存路径:
set "destination=%destination:"=%"
:: 上面这句为判断%destination%中是否存在引号,有则剔除
if "%destination%"==":" goto input_destination
if "%destination%"=="0" exit
if "%destination%"=="1" goto input_source
if "%destination%"=="9" goto freesize
:: 下面一句针对文件或文件夹取保存位置的文件名
for /d %%i in ("%source%.*") do set destination=%destination%%%~nxi
for %%i in ("%destination%") do set destination=%%~fi
set subarea=%destination:~0,1%
for %%i in ("%destination%") do if "%%~fi"=="%%~di" goto forbid_to_build_1
echo "%destination%" | findstr /i /c:"%source%" && goto forbid_to_build_2
if not exist %subarea%:nul goto subarea_noexist
:: 下面一句取日志名为要备份文件(夹)的文件名
for %%i in ("%source%") do set name_log=%%~ni
if exist "%destination%%name_log%_log.log" goto whether_add
if exist "%destination%" goto whether_over
相关文章 大家在看