前言

说实话在写这篇文章的时候,咸鱼不禁又想起了那件男默女泪的往事
 
我喜欢做笔记,我觉得好记性不如烂笔头,所以在我的学生以及职业生涯阶段,我用过四款笔记应用——Onenote、语雀、印象笔记、Typora
 
其中我个人觉得体验最好的非 Typora 莫属了
 
 

 
 
在 2022 年的时候,由于 Typora 收费,我就寻思网上找个破解版的用用(白嫖这一块嗷)
 
没想到一顿操作下来,我误删了现在的软件,更加令人崩溃的是,我当时 Typora 文件是存放在程序的目录之下!!!
 
如下图所示:
 
 

 
 
我是完全无视掉下面那个 DO NOT ADD FILES HERE
 
于是当我意识到我辛辛苦苦写下的笔记全部都没有了的时候,那一瞬间我崩溃了
 
赶紧上某鱼看看有没有帮忙恢复数据的服务,尽管到最后数据是恢复了,但内容全是乱码(再度崩溃)
 
 

 
 
 
 

 
经过这么一件惨案,咸鱼痛定思痛,于是决定写一个定期自动备份文件的 Windows 脚本
 
在写这个脚本之前,我们先来学习一下脚本当中用到的命令
 
xcopy
 
微软官方介绍:https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/xcopy
 
Copies files and directories, including subdirectories
 
可以看到,xcopy 用于复制文件和目录,包括子目录
 

 
 
参数如下:
 
参数
说明
/W
显示以下消息,并在开始复制文件之前等待响应:按任意键开始复制文件 ()
/p
提示确认是否要创建每个目标文件。
/c
忽略错误。
/v
在写入目标文件时验证每个文件,以确保目标文件与源文件相同。
/q
禁止显示 xcopy 消息。
/f
复制时显示源和目标文件名。
/l
生成要复制的文件列表,但不主动复制文件。
/G
当 目标 不支持加密时,创建解密的目标文件。
/d [:MM-DD-YYYY]
仅复制指定日期或之后更改的源文件。如果未包含 MM-DD-YYYY 值,xcopy则 复制比现有目标文件更新的所有源文件。此命令行选项允许更新已更改的文件。
/U
从仅存在于目标上的源复制文件。
/i
如果 source 为目录或包含通配符且目标不存在, xcopy 则假定 destination 指定目录名称并创建新目录。然后, xcopy 将所有指定的文件复制到新目录中。默认情况下, xcopy 会提示指定目标是文件还是目录。
/s
复制目录和子目录,除非它们为空。如果省略 /s,可在 xcopy 单个目录中工作。
/e
复制所有子目录,即使它们为空。将 /e 与 /s 和 /t 命令行选项一起使用。
/t
复制子目录结构 (,即树) ,而不复制文件。若要复制空目录,必须包含 /e 命令行选项。
/k
复制文件并保留 目标 文件上的只读属性(如果 源文件 上存在)。默认情况下, xcopy 删除只读属性。
/r
复制只读文件。
/h
复制具有隐藏和系统文件属性的文件。默认情况下, xcopy 不会复制隐藏的文件或系统文件
/a
仅复制设置了存档文件属性的 源文件 。/a 不会修改源文件的存档文件属性。
/m
复制设置了存档文件属性的 源文件 。与 /a 不同, /m 关闭源中指定的文件中的存档文件属性。
/n
使用 NTFS 短文件或目录名称创建副本。 将文件或目录从 NTFS 卷复制到 FAT 卷时,或者当 FAT 文件系统命名约定 (目标文件系统上需要 8.3 个字符) 时,需要 /n。destinatio*文件系统可以是 FAT 或 NTFS。
/o
复制文件所有权和自由访问控制列表 (DACL) 信息。
/x
复制文件审核设置和系统访问控制列表 (SACL) 信息 (暗示 /o) 。
/Y
取消提示,确认是否要覆盖现有目标文件。
/-Y
提示确认是否要覆盖现有目标文件。
/z
在可重启模式下通过网络复制。
/b
复制符号链接而不是文件。此参数是在 Windows Vista 中引入的。
/j
在不缓冲的情况下复制文件。建议用于非常大的文件。此参数已添加到 Windows Server 2008 R2 中。
/compress
在文件传输过程中请求网络压缩。
/?
在命令提示符下显示帮助。
 
关于 xcopy 的一些使用指南
 
  • 使用 /z
加上 /z参数表示可以在重启的模式下通过网络进行复制
 
如果你在复制阶段,网络断开了,则连接会在重新建立连接之后恢复,加了/z参数还能够显示每个文件完成复制操作的百分比
 
  • 复制加密文件
 
如果在复制加密文件过程中碰到不支持 EFS 的 volume,会报错
 
你需要先将文件解密,然后复制,之后再重新加密;又或者可以将加密文件复制到支持 EFS 的 volume
 
  • 追加文件
 
如果想要追加文件,把 Destination 指定成单个文件,但 source 是指定多个文件(使用通配符 or file1+file2+file3 格式)
 
  • Destination 默认值
如果省略 Destination,xcopy 则会将文件复制到当前目录
 
  • 提示指定 Destination 是文件还是目录
 
如果你的 Destination 不包含现有的目录,而且没有以反斜杠结尾,系统就会提示你
 
 

 
 
 
 
如果希望将一个或多个文件复制到某个文件,请按 F;如果希望将一个或多个文件复制到目录,请按 D
 
如果你不想这条提示出现,可以加上 /i 参数禁止显示此消息
 
如果 source 是多个文件或目录,则会导致 xcopy 假定目标为目录
 

正文

在了解了 xcopy 之后,就正式开始脚本的编写吧! 首先我们需要知道你笔记的路径 我笔记的路径是存放在D:\studynote下 而我笔记上面的图片的存放路径却是在C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images下 其次定义变量

 
 
其中%date:~0,4%%date:~5,2%%date:~8,2%表示加上当前日期 具体原理如下: 在 Windows cmd 命令行窗口执行date命令后这个环境变量的值为

 
 
%date:~0,4% 表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取4位字符(结果是 2023,即年份) %date:~5,2% 表示指针从左向右偏移5位,然后从偏移处开始提取2位字符(结果是03,月份) %date:~8,2% 表示指针从左向右偏移8位,然后从偏移处开始提取2位字符(结果是07,日份) 接下来我们使用 xcopy 命令

 
 
点击保存,后缀名改成 bat,然后执行,就可以看到备份成功了!

 
 
那有小伙伴可能会说,现在只是实现了备份功能,定期备份怎么实现呢 这里我们用 Windows 的任务计划来实现 打开任务计划程序,选择右上角的创建基本任务

 
 
 

 
 
设置备份时间为每个月的周一早上九点

 
 
 

 
 
选择执行脚本

 
 
 

 
 
这样一个定时备份的程序就完成了!

感谢阅读,喜欢作者就动动小手[一键三连],这是我写作最大的动力
 
 

一次惨痛教训让我写了个Windows定期备份文件脚本的更多相关文章

  1. 今天我自己第一次写了一个Windows批处理bat脚本,一起学习一下吧。

    今天我自己第一次写了一个Windows批处理bat脚本,备注一下 事情原由:自己使用Java开发了一个加解密的工具.但是当把工具给别人使用的时候,别人还需要把代码编译打包, 然后还需要看一下代码里面的 ...

  2. 轻狂写的桌面日历秀NSIS脚本供大家参考学习

    原文 轻狂写的桌面日历秀NSIS脚本供大家参考学习 现在共享桌面日历秀的NSIS脚本,以便交流学习.此脚本实现的功能如下: 7-Zip打开看不到内容.自动读取原安装路径,如果有则不允许更改.取得编译日 ...

  3. 写了一个Windows API Viewer,提供VBA语句的导出功能。提供两万多个API的MSDN链接内容的本地查询

    始出处:http://www.cnblogs.com/Charltsing/p/APIViewer.html QQ:564955427,QQ群:550672198 世面上的API Viewer已经不少 ...

  4. 写了一个Windows服务,通过C#模拟网站用户登录并爬取BUG列表查询有没有新的BUG,并提醒我

    写了一个Windows服务,通过C#模拟网站用户登录并爬取BUG列表查询有没有新的BUG,并提醒我 1.HttpUtil工具类,用于模拟用户登录以及爬取网页: using System; using ...

  5. 再次写给VC++ Windows开发者

    距离我的上一篇文章--写给VC++ Windows开发的初学者已经4年多时间过去了,感慨于时光如梭之余,更感慨于这么多年来(从1998年我初学VC 算起吧)到如今其实我仍然还只是个初学者而已.看看之前 ...

  6. github总结(4)--关于git reset --hard这个命令的惨痛教训

    背景叙述: 前几天,上传自己的个站到git上的时候,手欠脑发晕的用了次git reset --hard xxxxxx 命令.由于只在线上传入了一个index.html页面(自己都不知道自己咋想的,就这 ...

  7. 时刻注意QT与Windows系统的不同(惨痛教训)

    其实就一条:WINAPI使用'\',而QT使用'/'.如果程序立刻崩溃的话,是很难看出端倪的,所以要时刻注意...

  8. C++ 标准库之 iomanip 、操作符 ios::fixed 以及 setprecision 使用的惨痛教训经验总结

    本菜鸡自从退役之后就再也没怎么敲过 C++ 代码,在 C++ 语言下,求解关于浮点数类型的问题时,之前有碰到类似的情况,但是似乎都没有卡这块的数据,基本上用一个 setprecision 函数保留几位 ...

  9. 【记一次pull request的惨痛教训】不可见的分隔符之Zero-with-space

    问题描述: 我在修改 ctf-wiki 目录后进行 mkdocs build 去生成索引目录的时候报错: 然后我尝试定位到第 2 行和第 288 行,这些行我似乎并没有修改过啊. 未果,开始去找师傅解 ...

  10. 月赛 && SX_ACM 惨痛教训

    1.cnt变量若有多次询问,一定要记得初始化!!! 2.多组数据输出入,区泛~. 3.高性能问题,考虑位运算,

随机推荐

  1. rust程序设计(5)结构体相关练习题| 附带解答

    题目 基础结构体练习: 创建一个名为Person的结构体,包含name(字符串类型)和age(整数类型)两个字段. 写一个函数,接收一个Person实例作为参数,并打印出这个人的名字和年龄. 结构体方 ...

  2. 领域驱动设计之银行转账:Wow框架实战

    银行账户转账案例 银行账户转账案例是一个经典的领域驱动设计(DDD)应用场景.接下来我们通过一个简单的银行账户转账案例,来了解如何使用 Wow 进行领域驱动设计以及服务开发. 银行转账流程 准备转账( ...

  3. C/S结构用户界面设计

    C/S结构用户界面设计 [实验编号] 10003809547j  图形用户界面设计 [实验学时] 8学时 [实验环境] l 所需硬件环境为微机: l 所需软件环境为Microsoft Visual S ...

  4. 【web实验报告】实验二

    一.实验目的 通过一个小型网站的开发,掌握JSP基础知识,加深对session,request,response,cookie等对象的理解,掌握其使用方法,进一步深入掌握HTML.CSS和JavaSc ...

  5. Java 21 官方速览:全面拥抱虚拟线程

    前言 首先,感谢一下不少xdm私信关心我的身体状况,我也不是什么厉害的大佬,点开通知看到一堆私信还是蛮感动的. 近来有意大幅缩短了更新频率,增加了日常调养身体的时间,淋巴结确实变小了,睡眠也逐渐正常, ...

  6. VM离线安装Centos 8以及配置

    一.安装 1.预装准备 1.1. 硬件准备 物理内存:2G以上(这里指系统搭建所需占用空间) 物理外存:20G(这里指系统搭建所需占用空间) 1.2. 环境搭建准备 Window10系统电脑一台.Vm ...

  7. GOF23--23种设计模式(一)

    一.什么是设计模式 设计模式(Design  Pattern)是前辈们对代码开发经验的总结,是解决一系列特定问题的套路. 它不是语法规定,而是一套用来提高代码复用性,可读性,可维护性,稳健性,安全性的 ...

  8. [UOJ#748] [UNR#6 1B] 机器人表演

    在这个科技发达的年代,真人表演已经落伍了.参加完 UOI 后,hehe 蚤去到了下山市大剧院,观看下山市最火爆的机器人表演. 机器人有时比人类更能抓住事情的本质.所谓表演,其实也就是开场有若干个机器人 ...

  9. Excel对比两张表的某一列,匹配上则进行数据copy

    VLOOKUP(参数1,参数2,参数3,参数4) 参数1: 查找值 参数2:指定查找数据源的范围 参数3:返回查找区域的第几列数据 参数4:精确查找输入参数"0"or"f ...

  10. 若依vue启动报Error: error:0308010C:digital envelope routines::unsupported

    解决:若依vue启动报Error: error:0308010C:digital envelope routines::unsupported 1.描述: 问题产生原因是因为 node.js V17版 ...