admin管理员组文章数量:1567278
复制如下代码,在文本文档中以ANSI编码另存,改后缀为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接口
写在最后
这个脚本其实并不符合使用逻辑,因为用户并不能让这个脚本一直保持运行
与其这样,不如在插入U盘时手动备份,请看如下解决方案:
https://blog.csdn/weixin_43673589/article/details/109191675
版权声明:本文标题:批处理 检测U盘插入并自动备份文件 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1727574433a1121528.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论