粘貼如下代碼到文本文檔保存,改后綴為bat運行即可
:start
@echo off
::若檢測到U盤插入,則自動拷貝文件到U盤
::pt為自動備份的目錄路徑
setlocal enabledelayedexpansion
set "pt=D:\Desktop\自動備份"
:check
echo 正在檢測U盤
for %%i in (d e f g h i j k ) do (
fsutil fsinfo drivetype %%i: | findstr "可移動" >nul 2>nul && set upan=%%i:
)
if "%upan%"=="" (
echo 未檢測到U盤
ping -n 2 127.0.1>nul
cls
goto :check
)
echo 檢測到U盤
echo 本次復制的文件:
if exist "%upan%\備份" (
::copy "!pt!\*.*" "%upan%\備份\" /v
xcopy "!pt!\*.*" "%upan%\備份\" /s /h /d /c /y
goto :1
) else (
md "%upan%\備份"
::copy "!pt!\*.*" "%upan%\備份\"
xcopy "!pt!\*.*" "%upan%\備份\" /s /h /d /c /y
)
goto :2
:1
echo 已成功將目錄文件備份至U盤
ping -n 2 127.0.1>nul
pause>nul
goto :start
:2
echo 已成功將目錄文件備份至U盤
ping -n 2 127.0.1>nul
pause>nul
goto :start
Xcopy的擴展命令:
/c 忽略錯誤並繼續其他文件的復制
/d 復制新文件,已復制的將不再重新復制;若有新版本文件,將覆蓋舊版本文件
/s 復制非空的目錄和子目錄。如果省略 /s,xcopy 將在一個目錄中工作
/h 復制具有隱藏和系統文件屬性的文件(默認情況下,xcopy不復制隱藏或系統文件)
/y 不提示要覆蓋文件
/z 斷點續傳
創建文件夾:
md "路徑"
echo 顯示字符串
pause>nul 暫停、按任意鍵繼續
:start 標記,配合goto語句使用
goto :start 跳轉到標記處
運行效果:
原路徑:
U盤:
Tips:
如果出現亂碼,則編碼選擇ANSI
對於U盤來說,存放大量的小文件是比較頭疼的事情
可以先壓縮再備份
@echo off
::pt是待壓縮的文件夾路徑
set pt=D:\3dMaxWorkplace
::需要添加環境變量path C:\Program Files\WinRAR;
WinRAR a -r D:\Desktop\自動備份\"%pt:~3%" %pt%::D:\Desktop\自動備份\"%pt:~3%"是壓縮包存放路徑,壓縮包以原文件夾命名
pause
效果:
如需限制拷貝的文件類型,比如我只想要mp4
只需要將代表后綴的*號替換為mp4即可
xcopy "!pt!\*.mp4" "%upan%\備份\" /s /h /d /c /y
copy與xcopy的區別
copy只能復制指定文件,不能復制指定的文件夾及其子目錄
set pt="D:\Desktop\測試"
copy /v /y /z "%pt%\*.*" "F:\備份"
pause測試文件夾:
備份文件夾:
可見,copy只能復制路徑下的文件,不能復制子目錄及其文件
不過,copy可以顯示復制進度條,xcopy不可以
美中不足的是,批處理無法做到彈出U盤,因為在命令行時代甚至沒有USB接口