偶然听到一个功能
插入U盘或者硬盘后自动拷贝电脑上的文件,当时就挺感兴趣的但是没有任何思路。后面上网查了一下资料发现使用bat批处理介意实现但是后面我发现越走越偏,不过大致还是能实现这个功能,花了好几天解决了自动拷贝的问题 (不是很完善不过也可以达到目的)

自动备份方法:

第一次使用自动备份需要安装 Autoflash.exe 点击后第一次会报错 之后选择兼容安装即可 下次插入U盘则会自动备份

手动备份:

插入U盘后双击 bak.bat 即可

增量备份:每次备份都会检查之前备份的文件和需要备份的文件有没有改动 如果有改动则会备份最新的文件

注:首次安装可能杀毒软件会报异常 信任即可 Autoflash.exe安装好后,下次即使插入U盘杀毒软件报异常不管是阻止还是怎么样都会强制备份。
拷贝的文件名为 baks(bak.bat如果是在 F:(U盘路径) 则baks路径为 F:\baks)
AutoRun.inf、bak.bat、xxxx.txt需要在同一路径下(最好放在U盘第一级目录下不然感应不上是否插入,如 F:(U盘路径),可以将文件设置为隐藏)

实现

1:首先创建一个txt的文本文档复制以下代码将文件名及后缀改为 bak.bat

@echo off
setlocal enabledelayedexpansion
echo 备份到当前盘:
for /f %%i in (%~dp0xxxx.txt) do set "pt=%%i"&echo %%i&call :getname %%i&xcopy "!pt!\*.*" "%~dp0baks\!fn!\" /s /h /d /c /y /z
exit
:getname
set "fn=%~nx1"

for /f %%i in (%~dp0xxxx.txt)
%~dp0: 获取当前目录
xxxx.txt: 需要拷贝的路径配置

创建一个txt文件我这里创建的是 xxxx.txt 文件名不建议使用中文可能会有读取不到的问题
xxxx.txt 为需要备份的文件夹路径
如 D:\ 则会自动备份 D 盘下的所有文件
如 D:\wx 则会自动备份 D 盘下wx文件夹下的所有文件
注:C:\Windows下的系统文件需要右键管理员身份运行才可复制

这里的bat批处理路径只能为文件夹路径 如果需要到文件需要将 bat文件 中的

%%i&xcopy "!pt!\*.*"

修改为:

%%i&xcopy "!pt!"

xxxx.txt路径为**(这里路径就不能到文件夹了哦)**

3:在U盘中创建 AutoRun.inf

[autorun]
open=bak.bat

open=bak.bat AutoRun.inf 和 bak.bat 需要在U盘的同一级目录下,如果在U盘中的某一个文件下 如 open=F:\bak\bak.bat

到这里所有的配置全部完成了

4:安装 Autoflash.exe
这里说明一点windows系统安装 Autoflash.exe 其实是放在 c:\Windows\ 路径下,只需要使用 bat 批处理使用 xcopy 把 Autoflash.exe 复制到 c:\Windows\ 下然后在bat中使用命令 start Autoflash.exe 开启即可 但是 c:\Windows\ 下需要管理员权限,bat获取管理员权限我在后面会有说明,但是还是需要手动点击确定才可以copy没办法做到无感拷贝,后面在慢慢完善。Autoflash.exe结合AutoRun.inf 及 bat批处理 还有很多好玩的用法,可以自行发掘比如:插入U盘自动删除指定盘符的文件或者批量打开应用等

Autoflash.exe下载

[AutoRun]部分的命令及其详解。

含义:指定设备启用时运行之命令行。
格式:Open=命令行
(命令行:程序路径名 [参数])
参数:
自动运行的命令行,必须是.exe、.com、.bat文件,其他格式文件可以使用start.exe打开或使用ShellExecute命令。
备注:
命令行的起始目录是设备根目录和系统的$Path环境变量。

附说明

DefaultIcon
含义:指定应用程序的默认图标。
格式:DefalutIcon=图标路径名[,序号]
参数:
图标文件名:应用程序的默认图标路径名,格式可以为.ico、.bmp、.exe、.dll。当文件格式为.exe和.dll时,有时需要使用序号来指定图标。
序号:当文件格式为.exe和.dll时,文件可能包括多余一个图标,此时需要使用序号来指定图标,需要注意的是,序号是从0开始的。
备注:
应用程序的默认图标将在windows explorer核心的驱动显示窗口中替代设备的默认图标来显示。
图标路径名的默认目录是设备根目录。=

Icon 含义:
指定设备显示图标。 格式:
Icon=图标路径名[,序号] 参数:
图标文件名:
应用程序的默认图标路径名,格式可以为.ico、.bmp、.exe、.dll。当文件格式为.exe和.dll时,有时需要使用序号来指定图标。
序号:
当文件格式为.exe和.dll时,文件可能包括多余一个图标,此时需要使用序号来指定图标,需要注意的是,序号是从0开始的。
备注:
设备显示图标将在windows explorer核心的驱动显示窗口中替代设备的默认图标来显示。 图标路径名的默认目录是设备根目录。
当存在应用程序默认图标(DefaultIcon)时,本命令无效。

Label
含义:指定设备描述
格式:Label=描述
参数:
描述:任意文字,可以包括空格。
备注:
设备描述将在windows explorer核心的驱动显示窗口中替代设备的默认描述/卷标来显示。
在非windows explorer核心的驱动显示窗口中(例如右击设备选择属性)显示的仍然是设备的卷标。

ShellExecute
含义:指定设备启用时执行文件。(操作系统支持未知)
格式:ShellExecute=执行文件路径名 [参数]
参数:
执行文件路径名:设备启用时执行文件路径名。可以是任意格式文件。系统会调用设置的程序执行此文件。
参数:参数,根据执行文件作调整
备注:
命令行的起始目录是设备根目录和系统的$Path环境变量。

Shell/关键字/Command
含义:定义设备右键菜单执行命令行。
格式:Shell/关键字/Command=命令行
(命令行:程序路径名 [参数])
参数:
命令行:自动运行的命令行,必须是.exe、.com、.bat文件,其他格式文件可以使用start.exe打开。
备注:
命令行的起始目录是设备根目录和系统的$Path环境变量。

Shell/关键字
含义:定义设备右键菜单文本。
格式:Shell/关键字=文本
参数:
关键字:用以标记菜单,可以使用任何字符表示,包括空格。
文本:在右键菜单中显示的文本。可以使用任何字符,不能存在空格。
备注:
在同一Autorun.inf文件中,不同右键菜单关键字不同,相同右键菜单关键字相同。
右键菜单文本中可以使用&设定加速键,&&输出一个&。
Shell/关键字/Command命令Shell/关键字两者缺一不可,顺序无所谓。
当不存在Open、ShellExecute与Shell命令时,设备启用时运行第一个设备右键菜单指定命令。

Shell
含义:定义设备启用时运行之设备右键命令。
格式:Shell=关键字
参数:关键字:标记过的菜单关键字
备注:
Shell指定的关键字可以在AutoRun.inf文件的任意部分。
Open/ShellExecute/Shell命令后定义的优先级高。

[AutoRun.alpha]部分的命令简介。
[AutoRun.alpha]部分的命令与[AutoRun]部分的命令相同,只不过在基于RISC的计算机光驱中,[AutoRun.alpha]优先级高于[AutoRun]

[DeviceInstall]部分命令及其详解。
DriverPath
含义:
定义搜索驱动程序目录。
格式:
DriverPath=驱动程序路径
参数:
驱动程序路径:驱动程序所在路径,包括其子路径。
备注:
Windows XP以上支持。
仅CD-ROM支持
当系统监测到一个新的设备时,会提示用户寻找设备的驱动程序。当用户点选此CD-ROM时,当[DeviceInstall]部分存在时,系统会按照 DriverPath所标记的路径出寻找驱动程序。未标记的路径系统将忽略查找。当[DeviceInstall]部分不存在时,系统将进行完全查找。
如果不希望系统在此CD-ROM中搜索驱动程序,只加一行[DeviceInstall]不加DriverPath命令即可。

解释

@echo off

@echo off 表示执行了这条命令后关闭所有命令(包括本身这条命令)的回显。而 echo off 命令则表示关闭其他所有命令(不包括本身这条命令)的回显,@的作用就是关闭紧跟其后的一条命令的回显,值得注意的是 pause 也是一条命令,作用就是使程序暂停,也就是输出“请按任意键继续…”的原因。@echo off执行以后,后面所有的命令均不显示,包括本条命令。echo off执行以后,后面所有的命令均不显示,但本条命令是显示的。

setlocal enabledelayedexpansion

设置本地为延迟扩展。其实也就是:延迟变量,全称"延迟环境变量扩展",
在cmd执行命令前会对脚本进行预处理,其中有一个过程是变量识别过程,在这个过程中,如果有两个%括起来的如%value%类似这样的变量,就会对其进行识别,并且查找这个变量对应的值,再而将值替换掉这个变量,这个替换值的过程,就叫做变量扩展,然后再执行命令。

echo 备份到当前盘

打印到cmd命令中显示

for循环

对一组文件中的每一个文件执行某个特定命令。
具体解释可以查看:BAT批处理文件 for命令详解

bat批处理Xcopy参数:

/p 创建每个目标文件前提示。
/s 复制目录和子目录,除了空的。
/e 复制目录和子目录,包括空的。 与 /S /E 相同。可以用来修改 /T。
/v 验证每个新文件。
/w 提示您在复制前按键。
/c 即使有错误,也继续复制。
/i 如果目标不存在,又在复制一个以上的文件, 则假定目标一定是一个目录。
/q 复制时不显示文件名。
/f 复制时显示完整的源和目标文件名。
/l 显示要复制的文件。
/g 允许将没有经过加密的文件复制到不支持加密的目标。
/h 也复制隐藏和系统文件。
/r 改写只读文件。
/t 创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括空目录和子目录。
/u 只复制已经存在于目标中的文件。
/k 复制属性。一般的 Xcopy 会重设只读属性。
/n 用生成的短名复制。
/o 复制文件所有权和 ACL 信息。
/x 复制文件审核设置(隐含 /O)。
/y 禁止提示以确认改写一个现存目标文件。
/-y 导致提示以确认改写一个现存目标文件。
/z 用重新启动模式复制网络文件。

exit

退出cmd

:getname

getname分支(相当于一个函数),传入一个路径,获取文件夹的名称,设为变量fn(folder name)

%~nx1

%~nx1获取文件夹名或者文件名(包含后缀)

补充说明

关闭cmd窗口静默执行
放在 @echo off 下即可在执行 bat 批处理的时候不会弹出cmd框

if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin
::下面为需要执行的代码

手动管理员运行
放在 @echo off 下即可在执行 bat 批处理的时候默认以管理员身份运行 bat 文件
(部分文件或文件夹需要管理员身份运行)

ver|findstr "5\.[0-9]\.[0-9][0-9]*">nul && goto skip
>NUL 2>&1 REG.exe query "HKU\S-1-5-19" || (
ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\Getadmin.vbs"
ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\Getadmin.vbs"
"%TEMP%\Getadmin.vbs"
DEL /f /q "%TEMP%\Getadmin.vbs" 2>NUL
Exit /b
)
:skip
::下面为需要执行的代码

bat获取路径

了解CMD中的%~dp0。
%~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录。
%0代指批处理文件自身
%~d0 是指批处理所在的盘符
%~dp0 是盘符加路径
写个测试批处理文件

@echo off
echo 0 = %~0
echo d0 = %~d0
echo p0 = %~p0
echo dp0 = %~dp0
pause
exit
echo

C:\Windows\目录:%windir%
桌面位置:%userprofile%\Desktop

时间:时分秒 年-月-日

%time:0,2%%time:3,2%%time:~6,2% %date:0,4%-%date:5,2%-%date:~8,2%
秒:%time:~6,2%
分:%time:~3,2%
时:%time:~0,2%
年: %date:~0,4%
月:%date:~5,2%
日:%date:~8,2%

=============================== 有问题可评论,知道的我会解答,共勉 ===============================

检测U盘插入并自动备份自定义文件下的文件(支持增量更新)相关推荐

  1. 批处理 检测U盘插入并自动备份文件

    复制如下代码,在文本文档中以ANSI编码另存,改后缀为bat,运行即可 :start @echo off ::若检测到U盘插入,则自动拷贝文件到U盘 ::pt为自动备份的目录路径 setlocal e ...

  2. Python检测U盘插入、自动复制文件并写入新文件

    技术要点: 1)如何检测有U盘插入: 2)如何复制目录树: 3)如果U盘可写,如何写入新文件. 思考一下,然后到文末查看参考代码. ----------相关阅读---------- 教学课件 1900 ...

  3. Windows下使用Qt检测U盘插入和拔出的示例Demo程序

    本文转载自Qt检测U盘插入拔出Demo 要做这个,要先知道Qt的QAbstractNativeEventFilter类,虚函数nativeEventFilter.这个类的主要作用是捕获全局window ...

  4. cmake linux模板 多目录_多目录工程的CmakeLists.txt编写(自动添加多目录下的文件)...

    实现类似于vs中工程的CMakeLists.txt的编写.功能为main.cpp调用hello.cpp 的hello()函数,world.cpp的world()函数.使用自动添加多目录下的文件. 1. ...

  5. linux同步某台服务器,linux 两台服务器之间开机自动同步指定目录下的文件

    linux 两台服务器之间开机自动同步指定目录下的文件 服务器B(172.17.166.11)上开机或者重启会自动拉取服务器A(172.17.166.10)上指定目录下所有文件 1.创建服务器B到服务 ...

  6. WPF中检测U盘插入、拔出 实例

    类代码: /// <summary>/// 声明一个委托,用于代理一系列自定义方法/// </summary>public delegate void FlashDiskDel ...

  7. WINDOWS检测U盘插入,拔出

    检测U盘的插入或拔出状态,然后根据状态做出相关操作. 检测U盘是否被插入是通过监听WM_DEVICECHANGE消息来实现的. 判断-U盘拔出和插入-获取它盘符 2010-05-04 10:59 加入 ...

  8. android 快盘接口,金山快盘Android版自动备份功能详解

    近日,金山快盘Android版发布了新版本--1.9.3版,在这一版本中,小编发现了几大功能上的亮点,诸如密码锁功能.增加了常见问题答疑.优化"问题反馈"功能等,但是,新版手机快盘 ...

  9. qt启动后检测u盘插入和拔掉

    工作中,需要检测u盘的插入和拔掉.其余逻辑可以简化. 查了半天,感谢@q62290798 链接在 https://blog.csdn.net/q62290798/article/details/115 ...

最新文章

  1. 项目的简单总结一 -- 关于对贝塞尔和shapelayer结合使用的动画特效
  2. 特征重要性、特征集成+FeatureUnion、特征选择变换器+ColumnTransformer、标签特征变换+TransformedTargetRegressor、特征质量、自动学习数据中的特征
  3. 串口调试神器之Docklight
  4. .dat文件写入byte类型数组_深入浅出MATLAB数据处理之文件读写
  5. 网络编程学习笔记(getaddrinfo函数)
  6. 【数据竞赛】时间序列竞赛炸榜技巧
  7. [递推] hihocoder 1239 Fibonacci
  8. oracle 建分区索引_Oracle分区表及分区索引-创建list分区
  9. java就_GitHub - IammyselfYBX/This_is_how_Java_should_be_learned: 《Java就应该这样学》
  10. 微信公众号开发之微信服务器配置
  11. 计算机和HMI设备通信之程序上下载
  12. 星球大战 BZOJ 1015
  13. 系统架构图怎么画_产品架构图到底是怎么“画”出来的?
  14. 「WC 2019」数树
  15. 射极跟随器负载加重解析
  16. 大学生创业实战 - 代充的套利故事
  17. nginx 的基本概念
  18. 掩码、子网掩码及子网划分
  19. Python使用openpyxl模块小批量处理Excel文件
  20. 自制低成本3D激光扫描测距仪(3D激光雷达),第二部分

热门文章

  1. sort by age(vector)
  2. 品牌笔记本电脑启动BIOS按键
  3. Monkey King - 左偏树
  4. EMV技术学习和研究(九)终端行为分析
  5. openfire+smack4.2.3
  6. ORACLE函数库大全
  7. PS之5分钟学会使用快速选择工具抠图
  8. uniapp APP 端 WebSocket 使用,实现一个简单 WebSocket 工具类
  9. Dynamics Ax 微软官方社区地址
  10. 《final关键字》