⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 文件备份器v2.3修改版2.cmd

📁 文件 源碼可以再編輯 打入你要備份文件路徑就可以備份了
💻 CMD
📖 第 1 页 / 共 5 页
字号:
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

:over_write
attrib /s /d -s -h -r "%destination%\*.*">nul 2>nul
rd /q /s "%destination%">nul 2>nul
md "%destination%">nul 2>nul
(echo.
echo                                 备份日志)>"%destination%\%name_log%_log.log"
attrib /s /d +s +r "%destination%\*.*">nul 2>nul

:input_date
cls
color 1f
title 文件备份器-请输备份入日期
echo                               ╭────────╮
echo           ╭─────────┤ 请输入备份日期 ├─────────╮
echo           │                  ╰────────╯                  │
echo           │                                                        │
echo           │        1.若在每月的某几天备份,请输入从1到31的任意     │
echo           │                                                        │
echo           │    数字,比如1,3,4;若只在每月1号备份,请输入"1,";   │
echo           │                                                        │
echo           │        2.若在每周的某几天备份,请输入星期几的代码      │
echo           │                                                        │
echo           │    (M,T,W,Th,F,S,Su);如果指定日期较多,在查看任务     │
echo           │                                                        │
echo           │    列表的时候,日期一栏将用省略号显示;                │
echo           │                                                        │
echo           │        3.数字与字母不可混用;数字行或字母行首尾均无    │
echo           │                                                        │
echo           │    任何符号,其间用逗号分隔;请严格按照本格式填写!    │
echo           │                                                        │
echo           ╰────────────────────────────╯
echo.
echo            返回上一步请按 1                                退出请按 0
echo           ──────────────────────────────
echo                                   每天都备份请按 A
echo.
set copydate=
set /p copydate=          请输入备份日期:
if "%copydate%"=="" goto input_date
if "%copydate%"=="," goto input_date
if "%copydate%"=="0" exit
if "%copydate%"=="1" goto input_destination
if "%copydate%"=="1," goto input_time
if /i "%copydate%"=="a" goto all_date
:: 检查日期输入是否正确
set num=0
set char=%copydate%
for /f "tokens=1 delims=," %%i in ("%char%") do (
    echo "%%i"|findstr /i "M T W Th F S Su">nul && goto check_alphabetical_date|| goto check_numerical_date
)

:check_alphabetical_date
call :check_alp
:loop_alp
set char=%char:*,=%
:check_alp
for /f "tokens=1 delims=," %%i in ("%char%") do (
    echo "M T W Th F S Su"|findstr /i "%%i">nul || goto date_error
    echo "%char%"|find ",">nul && goto loop_alp
)
goto input_time

:check_numerical_date
call :check_num
:loop_num
set /a num+=1
set char=%char:*,=%
:check_num
for /f "tokens=1 delims=," %%i in ("%char%") do set input=%%i
if %input% GTR 31 goto date_error
if %num% GTR 30 goto date_error
echo %char%|find ",">nul || if %num% LEQ 30 goto input_time || goto date_error
goto loop_num

:input_time
cls
color 1f
title 文件备份器-请输入时间
echo.
echo                               ╭────────╮
echo           ╭─────────┤ 请输入备份时间 ├─────────╮
echo           │                  ╰────────╯                  │
echo           │        操作说明:                                      │
echo           │                                                        │
echo           │            请按格式输入备份时间,多个时间用空格        │
echo           │                                                        │
echo           │        分隔。该时间用24小时制(既从00:00到23:59)        │
echo           │                                                        │
echo           │        的小时:分钟格式表示。                           │
echo           │                                                        │
echo           │            例如:想分别在上午8点30分和下午4点进        │
echo           │                                                        │
echo           │        行备份,请在同一行输入8:30 16:00(注意:两       │
echo           │                                                        │
echo           │        个时间点之间有一个空格)                         │
echo           │                                                        │
echo           ╰────────────────────────────╯
echo.
echo            返回上一步请按 1                                退出请按 0
echo           ──────────────────────────────
echo.
set copytime=
set /p copytime=           请输入备份时间:
if "%copytime%"=="" goto input_time
if "%copytime%"=="0" exit
if "%copytime%"=="1" goto input_date
:: 检查时间输入是否正确
for /f "tokens=*" %%i in ("%copytime%") do set char=%%i
call :check_time
set num=0
:back
set /a num+=1
set char=%char:* =%
:check_time
for /f "tokens=1,2 delims=:" %%i in ("%char%") do (
    if %%i GTR 24 goto time_error
    if %%j GTR 60 goto time_error
    echo %char%|find " ">nul || goto input_name
)
goto back

rem    =======输入备份任务名称=======
:input_name
cls
color 1f
title 文件备份器-备份任务名称
echo.
echo                               ╭────────╮
echo           ╭─────────┤  备份任务名称  ├─────────╮
echo           │                  ╰────────╯                  │
echo           │        操作说明:                                      │
echo           │                                                        │
echo           │            请输入备份任务的名称,然后回车确认。        │
echo           │                                                        │
echo           │        本程序将在"系统安装盘:\Program Files\备份       │
echo           │                                                        │
echo           │        任务程序"下生成"备份任务名称_backup.bat"        │
echo           │                                                        │
echo           │        和"备份任务名称_revert.bat"这一对备份及恢       │
echo           │                                                        │
echo           │        复批处理。如需更改此备份任务的部分功能,        │
echo           │                                                        │
echo           │        请用文本编辑工具对批处理文件进行编辑。          │
echo           │                                                        │
echo           ╰────────────────────────────╯
echo.
echo            返回上一步请按 1                                退出请按 0
echo           ──────────────────────────────
echo.
echo.
set name=
set /p name=           请输入备份任务的名称:
if "%name%"=="" goto input_name
if "%name%"=="0" exit
if "%name%"=="1" goto input_time
if exist "%ProgramFiles%\备份任务程序\%name%_backup.bat" goto name_exist

call :list
echo         ╔══════════════════════════════╗
echo         ║  退出请按 0 ,返回上一步请按 1 ,放弃并开始新的备份请按 B  ║
echo         ║                                                            ║
echo         ║             继续下一步请按除0、1和B之外的任意键            ║
echo         ╚══════════════════════════════╝
echo.
set choice=
set /p choice=       请选择操作代码(0/1/B/其他键):
if "%choice%"=="0" exit
if "%choice%"=="1" goto input_name
if /i "%choice%"=="b" (
    attrib /s /d -s -h -r "%destination%\*.*">nul 2>nul
    rd /q /s "%destination%">nul 2>nul
    goto input_source
)
goto build_backup

:notice
cls
mode con lines=40
color 8e
title 文件备份器-注意事项
echo.
echo.
echo     ╔══════════════════════════════════╗
echo     ║                                                                    ║
echo     ║        1. 当程序提示某路径已存在时,强烈建议在作出覆盖操作前先查   ║
echo     ║                                                                    ║
echo     ║    看该目录下的内容,以免程序错误删除该目录下的所有内容,给您带    ║
echo     ║                                                                    ║
echo     ║    灾难性的损失。备份有风险,操作请谨慎!                          ║
echo     ║                                                                    ║
echo     ║        2. 路径名中,除了允许冒号和反斜杠符号紧跟盘符之外,其他位   ║
echo     ║                                                                    ║
echo     ║    置不能再含有半角状态下的以下11个符号,分别为:\、/、:、*、?、   ║
echo     ║                                                                    ║
echo     ║    "、<、>、(、)、|。输入其中任意一个符号,都会引起无法预料的错    ║
echo     ║                                                                    ║
echo     ║    误;在本程序中,文件名的命名也应遵守以上规定!                  ║
echo     ║                                                                    ║
echo     ║        3. 如果只输入"盘符+冒号"格式的路径,程序会把路径当作指定    ║
echo     ║                                                                    ║
echo     ║    盘的当前路径来处理,而不是指定盘的根目录。比如:假设系统安装    ║
echo     ║                                                                    ║
echo     ║    在C盘,在路径中只输入 C: ,则并不会认为是C盘根目录,而是C盘的   ║
echo     ║                                                                    ║
echo     ║    当前路径,默认为"C:\ducuments and settings\当前用户名";        ║
echo     ║                                                                    ║
echo     ║        4. 如果输入的路径不带盘符,则作为相对路径处理;             ║
echo     ║                                                                    ║
echo     ║        5. 本程序工作原理为:通过比较备份后文件与源文件的时间早晚   ║
echo     ║                                                                    ║
echo     ║    来决定是否进行复制操作,因此,任何改动备份后文件修改时间的操    ║
echo     ║                                                                    ║
echo     ║    作都会使程序不能及时更新源文件改动过的数据,请勿对备份后的文件  ║
echo     ║                                                                    ║
echo     ║    进行改名、添加或删除子文件等操作!                              ║

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -