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

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

if "%folder%"=="yes" (goto folder_copy) else (goto file_copy)

:file_copy
for /f "tokens=*" %%i in ("%source%") do (set file_root=%%~dpi)
(
echo xcopy /c /h /q /r %xcopy_parameter% /x /y "%SourceFiles%" "%file_root%"^>nul 2^>nul
echo attrib -h -r -s "%source%"^>nul 2^>nul
)>>"%batch_directory%%name%_revert.bat"
goto get_attrib

:folder_copy
(
echo xcopy /c /e /h /i /g /q /r /s /x /y "%SourceFiles%" "%source%"^>nul 2^>nul
echo del /a /f "%source%%name_log%_log.log"^>nul 2^>nul
)>>"%batch_directory%%name%_revert.bat"

rem  ========获取文件(夹)的属性=============
:get_attrib
:: 根据文件(夹)来取舍dir中的/s参数,以防%suorce%为文件时多列路径
:: 但是当%source%为文件的时候,dir /a /b "%source%"不会显示绝对路径
if "%folder%"=="yes" (set dir_='dir /a /b /s "%source%"') else (set dir_="%source%")
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%dir_%) do (
    set var=%%~ai
    set attrib_=
    if not "!var:~1,1!"=="-" set attrib_=+!var:~1,1!
    if not "!var:~3,1!"=="-" set attrib_=!attrib_! +!var:~3,1!
    if not "!var:~4,1!"=="-" set attrib_=!attrib_! +!var:~4,1!
    if not "!attrib_!"=="" echo attrib !attrib_! "%%i">>"%batch_directory%%name%_revert.bat"
)

:add_to_reg
cls
color 1f
title 文件备份器-开机自运行选项
echo.
echo                               ╭────────╮
echo           ╭─────────┤ 开机自运行选项 ├─────────╮
echo           │                  ╰────────╯                  │
echo           │        操作说明:                                      │
echo           │                                                        │
echo           │            本操作即将把备份任务加入到开机自运行        │
echo           │                                                        │
echo           │        选项中。若要取消开机自运行功能,请在"开始       │
echo           │                                                        │
echo           │        运行"中输入"msconfig",打开"系统配置实用       │
echo           │                                                        │
echo           │        程序",在"启动"处取消以备份任务名称命名的       │
echo           │                                                        │
echo           │        启动项目,或者在注册表[HKEY_LOCAL_MACHINE      │
echo           │                                                        │
echo           │        SOFTWAREMicrosoftWindowsCurrentVersion      │
echo           │                                                        │
echo           │        Run]下删除相应的字符串值。                      │
echo           │                                                        │
echo           ╰────────────────────────────╯
echo.
echo            接受请直接敲回车                                跳过请按 S
echo           ──────────────────────────────
echo.
set choice=
set /p choice=           请输入操作代码(S/回车):
if /i "%choice%"=="s" goto run_at
相关文章 大家在看