復制代碼 代碼如下:
@echo off
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 文件備份器V
:: 出處
::
:: 功能
::
::
::
::
::
::
::
:: 原理
::
:: 要修改或完善的地方
::
:: ① 統一標記是文件還是文件夾
:: ② 禁止把文件備份到本文件夾及其子文件夾中去
::
:: 更新歷史
::
::
::
:: 增加了記錄備份文件更新列表的功能
::
::
::
:: 因at命令只能以管理員權限運行
:: xcopy的/c參數
:: 盡可能多的文件
::
::
::
:: 對提取文件屬性的代碼做了優化
:: 感謝pengfei提供代碼
:: 的維護
::
::
::
:: 由於上次精簡過度
:: pengfei的測試
::
::
::
:: 添加了備份空目錄的參數
::
::
:: 實現了用同一條命令復制文件和文件夾
::
::
:: 精簡了獲取屬性的代碼
::
:: 完善了對備份後的文件進行恢復的操作
:: 都適用
::
::
:: 完善了對日期的檢測
::
:: 增加了恢復文件的功能
::
:: 對顯示各分區磁盤剩余空間的代碼進行了修改
:: 而不會畫蛇添足地顯示光盤剩余空間
::
:: 增加了日期和時間輸入錯誤檢測功能(感謝bagpipe提供代碼)
::
:: 修改了查詢各分區剩余空間的代碼
:: 感謝willsort作深入分析並提供代碼
:: 的文件夾和創建日志
:: 分代碼
::
:: 修正了一處錯誤
::
:: 更改備份日志代碼
:: 完成這一功能的功能鍵(感謝electronixtar的提醒)
:: 值為默認設置(有關討論請參考
:: tid=
::
:: 修改了部分代碼
:: 了文件名自動完成的功能(感謝willsort提出設想並提供代碼)
::
:: 增加了如下功能
:: 操作
::
:: 對備份後文件的保存位置這部分代碼進行了修改
:: 對象為文件和文件夾兩種情況
:: willsort提供代碼
:: 許追加至該目錄的選擇
::
:: 添加和修改了了如下功能
:: 開始運行本程序或者停止某項備份任務時
:: 備份任務程序
:: 序的保存位置
:: 的檢測(感謝willsort提供代碼)
::
:: 在注冊表中( 位置是
:: CurrentVersion\Run) 增添了開機自動運行備份程序的鍵值( 以備份任務名稱作
:: 為鍵值)
:: 開備份日志
::
:: 完善了備份流程
:: 創建備份任務的同時
:: 分區剩余空間情況的時候
:: 中的前景色和背景色
::
:: 增加了在每周的指定日期進行備份的功能
:: 告的功能
:: 事項中的內容
::
:: 增加了不允許把保存路徑設置為與源文件路徑相同
:: 的功能
:: 盟論壇() 網友bagpipe所發帖子
:: 到精簡
::
:: 增加了把備份文件的保存目錄拖曳到窗口執行的功能
:: 備份任務的功能
::
:: 增加了把要備份的文件拖曳到窗口執行的功能
:: ()版主willsort提供代碼
::
:: 修正了一處關鍵錯誤
:: ()版主willsort等網友的熱心幫助下
:: 序輸入錯誤檢測能力
::
:: 修改了顯示各分區剩余空間的代碼
:: 目下不同長度的字符
::
:: 增添了停止指定備份任務的功能
:: 份後的文件設置為
:: 的文件的安全
::
:: 頭兩天的算法存在備份不完全的弊端
:: 從而使本程序能夠備份指定目錄下除空目錄之外的所有文件( 包括目錄之下還有
:: 子目錄
:: 生成備份任務批處理的時候
:: 備份任務的話
:: 為手動指定
::
:: 增加了系統檢測功能
:: 檢測代碼
:: 來想增加指定每周的某幾天進行備份操作的功能
:: 放棄
::
:: 在對本人電腦上重要資料進行備份的時候
:: 備份軟件又有諸多限制
:: 來構思本程序的核心功能
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
rem if not
:: 屏蔽掉上一句
mode con lines=
title 文件備份器
color
cls
rem =========檢測系統是否支持本程序=============
:check_system
ver|find
rem =========檢測當前用戶是否具有管理員權限=============
:check_popedom
net users %username%|findstr /i
call :del_nouse
rem =======輸入要備份文件的路徑並檢測輸入是否正確=======
:input_source
mode con lines=
cls
color
title 文件備份器
echo ╭────────╮
echo ╭─────────┤選擇要備份的文件├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ 本程序能把指定文件在指定時間內備份到指定位 │
echo │ │
echo │ 置
echo │ │
echo │ 做法)
echo │ │
echo │ 路徑(請勿輸入非法符號)
echo │ │
echo │ 自動完成文件名請按Tab\Shift+Tab
echo │ │
echo │ 為了不錯誤刪除數據
echo │ │
echo │ 事項!切記切記! (恢復文件請按 R ) │
echo │ │
echo ╰────────────────────────────╯
echo
echo 查看注意事項請按
echo ──────────────────────────────
echo 查看已存在的備份任務請按
echo
set source=:
set /p source= 請輸入要備份文件的路徑
set
:: 上面這句為判斷%source%中是否存在引號
if
if
if
if
if /i
if not exist
for %%i in (
:: 判斷要備份的是文件還是文件夾
pushd
goto input_destination
:backup_task
cls
color
title 文件備份器
echo
at
echo
echo
echo ╔══════════════════════════════╗
echo ║ 如果要停止某個備份任務
echo ║ ║
echo ║ 多個ID號之間用空格分隔
echo ║ ║
echo ║ 退出請按
echo ╚══════════════════════════════╝
echo
set ID=
set /p ID= 請輸入不再需要的備份任務的ID
if
if /i
:: 以下語句的作用是
:: 不在at任務列表中的有哪些
:: 如果沒有
(for %%i in (%ID%) do at %%i /del /yes >nul
call :del_nouse
goto backup_task
) || goto input_source
rem =======輸入文件保存路徑並檢測輸入是否正確=======
:input_destination
cls
color
title 文件備份器
echo
echo
echo ╭────────╮
echo ╭─────────┤ 選擇保存位置 ├─────────╮
echo │ ╰────────╯ │
echo │ 操作說明
echo │ │
echo │ 請輸入保存位置的絕對路徑或者相對路徑 │
echo │ │
echo │ (注意
echo │ │
echo │ 請勿輸入非法的路徑名符號)
echo │ │
echo │ 存在的文件夾拖曳至本窗口
echo │ │
echo │ ╭────────────────╮ │
echo ╰─────┤ 查看各磁盤分區剩余空間請按
echo ╰────────────────╯
echo
echo 返回上一步請按
echo ──────────────────────────────
echo
set destination=:
set /p destination= 請輸入備份文件的保存路徑
set
:: 上面這句為判斷%destination%中是否存在引號
if
if
if
if
:: 下面一句針對文件或文件夾取保存位置的文件名
for /d %%i in (
for %%i in (
set subarea=%destination:~
for %%i in (
echo
if not exist %subarea%:\nul goto subarea_noexist
:: 下面一句取日志名為要備份文件(夾)的文件名
for %%i in (
if exist
if exist
:over_write
attrib /s /d
rd /q /s
md
(echo
echo 備份日志)>
attrib /s /d +s +r
:input_date
cls
color
title 文件備份器
echo ╭────────╮
echo ╭─────────┤ 請輸入備份日期 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │
echo │ │
echo │ 數字
echo │ │
echo │
echo │ │
echo │ (M
echo │ │
echo │ 列表的時候
echo │ │
echo │
echo │ │
echo │ 任何符號
echo │ │
echo ╰────────────────────────────╯
echo
echo 返回上一步請按
echo ──────────────────────────────
echo 每天都備份請按 A
echo
set copydate=
set /p copydate= 請輸入備份日期
if
if
if
if
if
if /i
:: 檢查日期輸入是否正確
set num=
set char=%copydate%
for /f
echo
)
:check_alphabetical_date
call :check_alp
:loop_alp
set char=%char:*
:check_alp
for /f
echo
echo
)
goto input_time
:check_numerical_date
call :check_num
:loop_num
set /a num+=
set char=%char:*
:check_num
for /f
if %input% GTR
if %num% GTR
echo %char%|find
goto loop_num
:input_time
cls
color
title 文件備份器
echo
echo ╭────────╮
echo ╭─────────┤ 請輸入備份時間 ├─────────╮
echo │ ╰────────╯ │
echo │ 操作說明
echo │ │
echo │ 請按格式輸入備份時間
echo │ │
echo │ 分隔
echo │ │
echo │ 的小時:分鐘格式表示
echo │ │
echo │ 例如
echo │ │
echo │ 行備份
echo │ │
echo │ 個時間點之間有一個空格) │
echo │ │
echo ╰────────────────────────────╯
echo
echo 返回上一步請按
echo ──────────────────────────────
echo
set copytime=
set /p copytime= 請輸入備份時間
if
if
if
:: 檢查時間輸入是否正確
for /f
call :check_time
set num=
:back
set /a num+=
set char=%char:* =%
:check_time
for /f
if %%i GTR
if %%j GTR
echo %char%|find
)
goto back
rem =======輸入備份任務名稱=======
:input_name
cls
color
title 文件備份器
echo
echo ╭────────╮
echo ╭─────────┤ 備份任務名稱 ├─────────╮
echo │ ╰────────╯ │
echo │ 操作說明
echo │ │
echo │ 請輸入備份任務的名稱
echo │ │
echo │ 本程序將在
echo │ │
echo │ 任務程序
echo │ │
echo │ 和
echo │ │
echo │ 復批處理
echo │ │
echo │ 請用文本編輯工具對批處理文件進行編輯
echo │ │
echo ╰────────────────────────────╯
echo
echo 返回上一步請按
echo ──────────────────────────────
echo
echo
set name=
set /p name= 請輸入備份任務的名稱
if
if
if
if exist
call :list
echo ╔══════════════════════════════╗
echo ║ 退出請按
echo ║ ║
echo ║ 繼續下一步請按除
echo ╚══════════════════════════════╝
echo
set choice=
set /p choice= 請選擇操作代碼(
if
if
if /i
attrib /s /d
rd /q /s
goto input_source
)
goto build_backup
:notice
cls
mode con lines=
color
title 文件備份器
echo
echo
echo ╔══════════════════════════════════╗
echo ║ ║
echo ║
echo ║ ║
echo ║ 看該目錄下的內容
echo ║ ║
echo ║ 災難性的損失
echo ║ ║
echo ║
echo ║ ║
echo ║ 置不能再含有半角狀態下的以下
echo ║ ║
echo ║
echo ║ ║
echo ║ 誤
echo ║ ║
echo ║
echo ║ ║
echo ║ 盤的當前路徑來處理
echo ║ ║
echo ║ 在C盤
echo ║ ║
echo ║ 當前路徑
echo ║ ║
echo ║
echo ║ ║
echo ║
echo ║ ║
echo ║ 來決定是否進行復制操作
echo ║ ║
echo ║ 作都會使程序不能及時更新源文件改動過的數據
echo ║ ║
echo ║ 進行改名
echo ║ ║
echo ╚══════════════════════════════════╝
echo
echo 按任意鍵返回上一步
pause>nul
goto input_source
:whether_over
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo ________________________________________________________________________________
echo
echo 您輸入的路徑
echo
echo ________________________________________________________________________________
echo
echo ╔══════════════════════════════════╗
echo ║ 按O覆蓋
echo ╚══════════════════════════════════╝
echo
echo
set choice=
set /p choice= 請選擇(O/A/V/
if /i
if /i
if /i
if
if
goto whether_over
:whether_add
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo ________________________________________________________________________________
echo
echo
echo
echo ________________________________________________________________________________
echo
echo ╔═══════════════════════════════════╗
echo ║ 按 V 查看保存目錄
echo ╚═══════════════════════════════════╝
echo
echo
set choice=
set /p choice= 請選擇(V/O/A/
if /i
if /i
if /i
if
if
goto whether_add
:freesize
:: 假設字符串freesize長度范圍為
:: 則首先在freesize前補足
:: 的數字freesize
:: 為了兼顧排版的顯示
cls
color
title 文件備份器
setlocal EnableDelayedExpansion
echo
echo
echo ╔══════════════════════════════╗
echo ║ 磁盤分區 磁盤卷標名 剩余空間(MB) ║
echo ║ _____________________________________________________ ║
for %%d in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist %%d:\nul (
for /f
if not
set /a freesize=!freesize:~
set freesize= !freesize!
set freesize=!freesize:~
for /f
set volume= !volume!
set volume=!volume:~
echo ║ %%d: !volume! !freesize! ║
)
)
)
echo ╚══════════════════════════════╝
echo
echo
echo
echo
echo 按任意鍵返回上一步
pause>nul
goto input_destination
rem ========創建備份任務腳本程序
:build_backup
call :list
title 文件備份器
if not exist
set batch_directory=%ProgramFiles%\備份任務程序
attrib /s /d
:: 因為把所有的批處理內容只用一句 >
:: 所以其中的括號都要用 ^ 來轉義
(
echo @echo off
echo mode con cols=
echo color
echo title 文件備份器
echo
echo rem 功能說明
echo
echo rem 本程序由
echo
echo rem build on %date% %time:~
echo
echo rem 原理
echo rem 則復制原始文件覆蓋備份文件
echo
echo if not exist
echo title 文件丟失
echo color
echo echo
echo echo ___________________________________
echo echo
echo echo 文件
echo echo
echo ecoh 不存在
echo echo
echo echo ___________________________________
echo ping
echo exit^)
echo if not exist
)>
set xcopy_parameter=
if
(
echo attrib /s /d
echo set times=
echo setlocal enabledelayedexpansion
echo for /f
echo if
echo if not defined times call :head
echo if ^^!file_time^^! lss %%%%~ti set file_time=%%%%~ti^&set file_route=%%%%~dpnxi
echo if not
echo ^) else ^(echo
echo ^)
echo if
echo ^)
echo ^(
echo echo
echo echo 最後更新的文件是
echo ^)^>^>
echo :end
echo attrib /s /d +s +r
echo start
echo goto :eof
echo
)>>
call :build_head
goto build_revert
:file_backup
(
echo xcopy /c /d /h /i /g /q /x /y
echo attrib
echo echo
echo for /f
echo echo ^^^<%%date:~
echo ^)
echo attrib +s +r
echo start
)>>
rem ========創建文件恢復腳本程序========
:build_revert
:: 恢復備份後文件(夾)的完整路徑
for %%i in (
:: 判斷%source%是文件還是文件夾
if
(
echo @echo off
echo mode con lines=
echo color
echo title 文件備份器
echo
echo rem 功能說明
echo
echo rem 本程序由
echo
echo rem build on %date% %time:~
echo
echo rem 原理
echo rem 則復制備份後的文件覆蓋源文件
echo rem 從恢復程序中讀出原始屬性並重新設置
echo if not exist
echo title 文件丟失
echo color
echo echo
echo echo
echo echo
echo echo
echo echo
echo echo
echo echo ________________________________________________________________________________
echo echo
echo echo 文件
echo echo
echo echo ________________________________________________________________________________
echo ping
echo exit^)
echo echo
echo echo
echo echo
echo echo
echo echo
echo echo
echo echo ________________________________________________________________________________
echo echo
echo echo 正在把文件從
echo echo
echo echo ________________________________________________________________________________
)>
if
echo attrib /s /d
if
:file_copy
for /f
(
echo xcopy /c /h /q /r %xcopy_parameter% /x /y
echo attrib
)>>
goto get_attrib
:folder_copy
(
echo xcopy /c /e /h /i /g /q /r /s /x /y
echo del /a /f
)>>
rem ========獲取文件(夾)的屬性=============
:get_attrib
:: 根據文件(夾)來取捨dir中的/s參數
:: 但是當%source%為文件的時候
if
setlocal enabledelayedexpansion
for /f
set var=%%~ai
set attrib_=
if not
if not
if not
if not
)
:add_to_reg
cls
color
title 文件備份器
echo
echo ╭────────╮
echo ╭─────────┤ 開機自運行選項 ├─────────╮
echo │ ╰────────╯ │
echo │ 操作說明
echo │ │
echo │ 本操作即將把備份任務加入到開機自運行 │
echo │ │
echo │ 選項中
echo │ │
echo │ \運行
echo │ │
echo │ 程序
echo │ │
echo │ 啟動項目
echo │ │
echo │ SOFTWARE\Microsoft\Windows\CurrentVersion\ │
echo │ │
echo │ Run]下刪除相應的字符串值
echo │ │
echo ╰────────────────────────────╯
echo
echo 接受請直接敲回車 跳過請按 S
echo ──────────────────────────────
echo
set choice=
set /p choice= 請輸入操作代碼(S/回車)
if /i
rem ========在注冊表中增添自啟動項以便開機時自動備份=============
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v %name% /t REG_SZ /d
:run_at
:: 強制啟用計劃任務服務
sc config Schedule start= AUTO >nul
sc start Schedule>nul
rem ==========導入at計劃任務=========
for %%i in (%copytime%) do (
at %%i /every:%copydate%
)
attrib /s /d
(
echo
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo
echo 於%date% %time:~
echo 備份對象
echo 備份文件保存位置
echo 備份程序位置
echo 文件恢復程序位置
echo
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo
echo ________________________________________________________________________________
)>>
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 正在備份文件 ├─────────╮
echo │ ╰────────╯ │
echo │ 操作說明
echo │ │
echo │ 備份時間和文件大小
echo │ │
echo │ 耐心等待…… │
echo │ │
echo ╰────────────────────────────╯
xcopy /c /h /i /g /q /r %xcopy_parameter% /x /y
attrib /s /d +s +r
:: 添加當計劃任務出錯時提交報告的功能
::
:: 當使用計劃任務讓系統自動運行一些命令或程序時
:: 在系統的默認設置裡
:: 此設置就是讓計劃任務在出現錯誤時彈出提示信息
:: 要禁用此功能
::
:: reg add HKLM\SOFTWARE\Microsoft\SchedulingAgent /v NotifyOnTaskMiss /t REG_DWORD /d
cls
title 備份日志
echo
echo
type
echo
echo
echo
echo 按任意鍵繼續
pause>nul
cls
title 備份任務列表
echo
echo
echo
echo
echo
echo
echo ________________________________________________________________________________
echo
for %%i in (%copytime%) do (
echo 已經添加了每月^(周^) %copydate% 日 %%i 對
)
echo
echo ________________________________________________________________________________
echo
echo 如要繼續添加備份任務
echo
echo
set again=
set /p again= 請選擇下一步操作代碼:
if /i
exit
rem ========刪除不再使用的文件或目錄=============
:del_nouse
:: 以下語句的作用是
:: 不在at任務列表中的有哪些
:: 如果沒有
:: 如果由本程序在%ProgramFiles%下創建的目錄為空
attrib
setlocal enabledelayedexpansion
for %%i in (
set full_name=%%i
set part_name=!full_name:~
at|find /i
del /f /q
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v %%~fi /f >nul
)
)
for %%i in (
find /i
)
if not exist
dir /a /b
goto :eof
:: ━━━━━━━━━━━━━━━━━以下代碼為出錯提示━━━━━━━━━━━━━━━━━
:system_error
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 操作系統不支持 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ │
echo │ 非常抱歉
echo │ │
echo │ 程序即將退出
echo │ │
echo ╰────────────────────────────╯
ping
:popedom_error
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 權限不足 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ │
echo │ │
echo │ 非常抱歉
echo │ │
echo │ 請換用具備管理員組權限的其他用戶帳號來運行 │
echo │ │
echo │ 按任意鍵退出
echo │ │
echo ╰────────────────────────────╯
pause>nul
goto :eof
:subarea_noexist
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 磁盤分區不存在 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ │
echo │ 盤符為 %subarea% 的磁盤分區不存在 │
echo │ │
echo │ 按任意鍵返回上一步重新選擇路徑 │
echo │ │
echo ╰────────────────────────────╯
echo
pause>nul
goto input_destination
:source_noexist
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 文件不存在 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ │
echo │ 要備份的文件不存在 │
echo │ │
echo │ 按任意鍵返回上一步重新選擇 │
echo │ │
echo ╰────────────────────────────╯
echo
pause>nul
goto input_source
:forbid_to_backup
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 禁止備份 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ │
echo │ 本程序不支持全盤備份 │
echo │ │
echo │ 按任意鍵返回上一步重新選擇 │
echo │ │
echo ╰────────────────────────────╯
echo
pause>nul
goto input_source
:forbid_to_build_
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 禁止創建 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ │
echo │ 為了數據的安全
echo │ │
echo │ 按任意鍵返回上一步重新選擇 │
echo │ │
echo ╰────────────────────────────╯
echo
pause>nul
goto input_destination
:forbid_to_build_
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 禁止創建 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ 警告
echo │ │
echo │ 或者位於要備份文件的某一目錄下 │
echo │ │
echo │ 為了數據的安全
echo │ │
echo │ 按任意鍵返回上一步重新選擇 │
echo │ │
echo ╰────────────────────────────╯
echo
pause>nul
goto input_destination
:destination_input_erro
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 路徑輸入錯誤 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ │
echo │ 您的路徑輸入有錯誤 │
echo │ │
echo │ 請在半角狀態輸入冒號和反斜槓 │
echo │ │
echo │ 按任意鍵返回上一步重新選擇 │
echo │ │
echo ╰────────────────────────────╯
echo
pause>nul
goto input_destination
:date_error
cls
color
title 文件備份器
echo
echo ╭────────╮
echo ╭─────────┤ 日期輸入錯誤 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ 您的日期輸入有錯誤 │
echo │ │
echo │ │
echo │
echo │ │
echo │
echo │ │
echo │
echo │ │
echo │
echo │ │
echo │ 任意幾個
echo │ │
echo │
echo │ │
echo │ │
echo │ 按任意鍵返回上一步重新選擇 │
echo │ │
echo ╰────────────────────────────╯
pause>nul
goto input_date
:time_error
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 時間輸入錯誤 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ │
echo │ 您的時間輸入有錯誤 │
echo │ │
echo │小時數不能大於
echo │ │
echo │ 按任意鍵返回上一步重新選擇 │
echo │ │
echo ╰────────────────────────────╯
echo
pause>nul
goto input_time
:name_exist
cls
color
title 文件備份器
echo
echo
echo
echo
echo
echo ╭────────╮
echo ╭─────────┤ 存在同名程序 ├─────────╮
echo │ ╰────────╯ │
echo │ │
echo │ │
echo │
echo │ │
echo │ 按任意鍵返回上一步重新選擇 │
echo │ │
echo ╰────────────────────────────╯
echo
pause>nul
goto input_name
:: ━━━━━━━━━━━━━━━━━以下代碼為被調用的子過程━━━━━━━━━━━━━━━━━
rem ========查看保存位置下的內容以決定 追加/覆蓋/重新選擇 等操作========
:view_directory
explorer
goto :eof
rem ========簡化每天都需要備份時的操作========
:all_date
set copydate=
goto input_time
goto :eof
rem ========從備份文件中恢復文件========
:revert
explorer
goto input_source
goto :eof
rem ========顯示備份清單========
:list
cls
color
title 文件備份器
echo
echo ________________________________________________________________________________
echo
echo 備份任務名稱
echo
echo 要備份的文件
echo
echo 保存位置
echo
echo 備份日期
echo
echo 備份時間
echo
echo ________________________________________________________________________________
echo
goto :eof
rem ========日志裡的更新列表頭========
:build_head
(
echo :head
echo set times=
echo ^(
echo echo _____________________________________________________________________________________
echo echo
echo echo *更新列表^^^(%%date:~
echo echo
echo ^)^>^>
echo goto :eof
)>>
goto :eof
From:http://tw.wingwit.com/Article/program/qrs/201401/30218.html