自動備份文件到U盤的方法


粘貼如下代碼到文本文檔保存,改后綴為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接口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM