一次惨痛教训让我写了个Windows定期备份文件脚本
前言
说实话在写这篇文章的时候,咸鱼不禁又想起了那件男默女泪的往事
我喜欢做笔记,我觉得好记性不如烂笔头,所以在我的学生以及职业生涯阶段,我用过四款笔记应用——Onenote、语雀、印象笔记、Typora
其中我个人觉得体验最好的非 Typora 莫属了
![](https://picx.zhimg.com/80/v2-8b05cac4dbf4d9fcbd01fb53f11ae228_720w.png)
在 2022 年的时候,由于 Typora 收费,我就寻思网上找个破解版的用用(白嫖这一块嗷)
没想到一顿操作下来,我误删了现在的软件,更加令人崩溃的是,我当时 Typora 文件是存放在程序的目录之下!!!
如下图所示:
![](https://picx.zhimg.com/80/v2-8933555c6b1d952647118f1e62f20d71_720w.png)
我是完全无视掉下面那个 DO NOT ADD FILES HERE
于是当我意识到我辛辛苦苦写下的笔记全部都没有了的时候,那一瞬间我崩溃了
赶紧上某鱼看看有没有帮忙恢复数据的服务,尽管到最后数据是恢复了,但内容全是乱码(再度崩溃)
![](https://picx.zhimg.com/80/v2-28c39911b010b768844880d17f646e09_720w.png)
![](https://picx.zhimg.com/80/v2-f51240dc38579d401d35387c5fbb88a9_720w.png)
经过这么一件惨案,咸鱼痛定思痛,于是决定写一个定期自动备份文件的 Windows 脚本
在写这个脚本之前,我们先来学习一下脚本当中用到的命令
xcopy
微软官方介绍:https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/xcopy
Copies files and directories, including subdirectories
可以看到,xcopy 用于复制文件和目录,包括子目录
![](https://picx.zhimg.com/80/v2-8cf6b2425d9ca51f66515c94130578cd_720w.png)
参数如下:
关于 xcopy 的一些使用指南
-
使用 /z
加上 /z参数表示可以在重启的模式下通过网络进行复制
如果你在复制阶段,网络断开了,则连接会在重新建立连接之后恢复,加了/z参数还能够显示每个文件完成复制操作的百分比
-
复制加密文件
如果在复制加密文件过程中碰到不支持 EFS 的 volume,会报错
你需要先将文件解密,然后复制,之后再重新加密;又或者可以将加密文件复制到支持 EFS 的 volume
-
追加文件
如果想要追加文件,把 Destination 指定成单个文件,但 source 是指定多个文件(使用通配符 or file1+file2+file3 格式)
-
Destination 默认值
如果省略 Destination,xcopy 则会将文件复制到当前目录
-
提示指定 Destination 是文件还是目录
如果你的 Destination 不包含现有的目录,而且没有以反斜杠结尾,系统就会提示你
![](https://pica.zhimg.com/80/v2-7575d0d5426a5f1ede2ef6322c9467bd_720w.png)
如果希望将一个或多个文件复制到某个文件,请按 F;如果希望将一个或多个文件复制到目录,请按 D
如果你不想这条提示出现,可以加上 /i 参数禁止显示此消息
如果 source 是多个文件或目录,则会导致 xcopy 假定目标为目录
正文
在了解了 xcopy 之后,就正式开始脚本的编写吧! 首先我们需要知道你笔记的路径 我笔记的路径是存放在D:\studynote下 而我笔记上面的图片的存放路径却是在C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images下 其次定义变量
![](https://pic1.zhimg.com/80/v2-c9b02c2f9cf42f58c30fac8ef8f1c6e1_720w.png)
其中%date:~0,4%%date:~5,2%%date:~8,2%表示加上当前日期 具体原理如下: 在 Windows cmd 命令行窗口执行date命令后这个环境变量的值为
![](https://picx.zhimg.com/80/v2-d1cdf0c9665556685b2bf65680987761_720w.png)
%date:~0,4% 表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取4位字符(结果是 2023,即年份) %date:~5,2% 表示指针从左向右偏移5位,然后从偏移处开始提取2位字符(结果是03,月份) %date:~8,2% 表示指针从左向右偏移8位,然后从偏移处开始提取2位字符(结果是07,日份) 接下来我们使用 xcopy 命令
![](https://picx.zhimg.com/80/v2-7f3bc1433c389915bcf7387e9b49178c_720w.png)
点击保存,后缀名改成 bat,然后执行,就可以看到备份成功了!
![](https://picx.zhimg.com/80/v2-4928439d4fc22aeafc323c55f56df461_720w.png)
那有小伙伴可能会说,现在只是实现了备份功能,定期备份怎么实现呢 这里我们用 Windows 的任务计划来实现 打开任务计划程序,选择右上角的创建基本任务
![](https://picx.zhimg.com/80/v2-2105328dc67ff4e8f3552a9fe8a49989_720w.png)
![](https://picx.zhimg.com/80/v2-08c1edbf967dcdd14c24c65aee8ffdb5_720w.png)
设置备份时间为每个月的周一早上九点
![](https://picx.zhimg.com/80/v2-c622408679485cb81a8bde3739e698af_720w.png)
![](https://picx.zhimg.com/80/v2-e3dd0d07a317a07445bea1a23f421b23_720w.png)
选择执行脚本
![](https://pica.zhimg.com/80/v2-6c093c72feb474260f325bd807cafc5e_720w.png)
![](https://pica.zhimg.com/80/v2-8ace4535b98ad209a874f65c18fd6d67_720w.png)
这样一个定时备份的程序就完成了!
感谢阅读,喜欢作者就动动小手[一键三连],这是我写作最大的动力