粘贴如下代码到文本文档保存,改后缀为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接口

posted on 2020-10-17 01:54  海月CSDN  阅读(1069)  评论(1编辑  收藏  举报