Windows 编写自动复制备份、删除文件定时任务脚本

news2025/7/24 8:00:10

目录

一、backup.bat 脚本内容如下:

二、脚本内容解析

1.自动生成当天日期的目录

2. 删除前 n 天的文件

forfile 命令参数说明:

3.复制文件到指定目录

robocopy 命令参数说明:

结论:

三、设置定时任务

1. 打开 控制面板-Windows工具(管理工具)-任务计划程序

2.描述任务信息

3.设置触发器

4.选择前面创建的脚本

5.查看任务列表 


一、backup.bat 脚本内容如下:

set TODAY=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%
mkdir D:\keymanTech\backup\mongodb_backup\%TODAY%
start cmd /c "cd /d C:\Program Files\MongoDB\Server\4.2\bin\  && mongodump.exe -h localhost:27017 --authenticationDatabase test -u root -p 123 -d test -o D:\keymanTech\backup\mongodb_backup\%TODAY%"
start cmd /c "cd /d C:\Windows\system32 && ROBOCOPY D:\keymanTech\factorybi\dist\public\upload D:\keymanTech\backup\upload /R:5 /E /XO /NP >> D:\keymanTech\backup\upload_bak.logs"
forfiles /p D:\keymanTech\backup\mongodb_backup\ /s /d -30 /m * /c "cmd /c del /q /f @path"

二、脚本内容解析

1.自动生成当天日期的目录

# 日期格式 date 是年月日,time 是时分秒
set TODAY=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%

# 创建当前时间的目录
mkdir D:\keymanTech\backup\mongodb_backup\%TODAY%

# 把 mongodb 备份到生成的当前日期目录中
start cmd /c "cd /d C:\Program Files\MongoDB\Server\4.2\bin\  && mongodump.exe -h localhost:27017 --authenticationDatabase test -u root -p 123 -d test -o D:\keymanTech\backup\mongodb_backup\%TODAY%"

生成目录名称为:2022-11-18_11-03-23 

但是上述指令不能生成如 .txt、.zip、.sql等后缀的文件,只能创建目录。还有就是时间戳格式不能写成:2022-11-18 11:03:23。有知道的同学欢迎在评论区指点一二,感谢!

2. 删除前 n 天的文件

# 删除 D:\keymanTech\backup\mongodb_backup\ 目录下 前30天的文件
forfiles /p D:\keymanTech\backup\mongodb_backup\ /s /d -30 /m * /c "cmd /c del /q /f @path"

forfile 命令参数说明:

  • /p:表示开始搜索的路径。默认文件夹是当前工作的目录 (.)。
  • /s:指导 forfiles 递归搜索目录。
  • /m:根据搜索掩码搜索文件。默认搜索掩码是 '*'。 '*' 表示所有文件类型,如果要删除特定文件格式,可自行指定(如:只删除txt文件,可写成 *.txt )
  • /d:指定日期,有绝对日期和相对日期,此处-30指当前日期的30天前
  • /c:表示为每个文件执行的命令。命令字符串应该用双引号括起来。默认命令是 “cmd /c echo @file”。

自行指定的命令 "cmd /c del /q /f @path" 中:

  • /c:表示执行完批处理命令后,关闭CMD窗口
  • del:删除文件的命令
  • /q:安静模式。删除全局通配符时,不要求确认
  • /f:强制删除只读文件。
  • @path:返回文件的完整路径。

 如果想了解更多 forfile 命令信息,可以使用 forfiles /? 

但是 forfile 命令只能删除文件,而不能删除目录文件夹。有知道的童鞋欢迎在评论区指正! 

3.复制文件到指定目录

ROBOCOPY D:\keymanTech\factorybi\dist\public\upload D:\keymanTech\backup\upload /R:5 /E /XO /NP >> D:\keymanTech\backup\upload_bak.logs"

robocopy 命令参数说明:

  • /R:5——指定复制失败时的重试次数为5次,默认是1000000次
  • /W:15——指定等待重试的间隔时间为15秒,默认是30秒
  • /E——复制子目录,包含空的子目录
  • /XO——排除较旧的文件
  • /NP——指定不要显示复制操作的进度
  • /PURGE——删除源目录中不再存在的目标文件和目录
     

如果想了解更多 robocopy 命令信息,可以使用 robocopy /?  

结论:

  1. 不管加不加 /XO 参数,只要源端新增一个文件或更新一个文件,目标端也自动新增一个文件和更新一个文件了
  2. 如果想让源端删除的文件,在目标端也被自动删除掉,就加 /PURGE 参数,如果不想该文件在目标端被自动删除,就一定不能加 /PURGE 参数 

三、设置定时任务

1. 打开 控制面板-Windows工具(管理工具)-任务计划程序

 选择右边操作列中的“创建任务”:

2.描述任务信息

3.设置触发器

就是设置脚本的触发频率。在触发器选项中点击新建:

4.选择前面创建的脚本

选择“操作”选择,选择要执行的脚本文件:

5.查看任务列表 

前面步骤执行完即可创建成功,在任务计划程序库中可以看到刚刚创建的定时任务:

至此,可以根据编写的bat脚本与定时任务相结合做到自动备份、删除等功能! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】谈谈ArrayList和LinkedList的区别

(此图源于比特高博) 上图简洁明了的列出了二者的不同点 下面咱们详细聊聊具体的 要问的是区别,问不同点,那就得从二者共有的但是不同的点来讨论 1.底层实现上:ArrayList底层是顺序表,采用数组结构&…

引入DDP技术:英特尔网卡让数据处理更高效

英特尔网卡引入DDP技术后,提高了云和NFV部署的数据包处理效率,按需重配置报文处理引擎,让数据处理更高效 ◆可编程报文处理流水线 ◆按需优化工作负载 ◆无需重启服务器 ◆设备使用更高效 ◆无缝启用新服务 Intel Ethernet 700系列产品…

谷粒商城项目总结(一)-基础篇

一、项目简介 本项目适合人群:学过ssm是必须的。项目里有mybatis-plus和springcloud的内容,你可以用本项目来做实践,也可以利用本项目初识cloud,但最好还是对微服务有一定了解。 下好了vargant,如果安装centos7很慢&…

是什么让 NFT 项目成为“蓝筹”?

Nov. 2022, Vincy Data Source: Footprint Analytics - Bluechip Collection 在 NFT 这样一个不稳定和新兴的行业中,要赋予项目为 "蓝筹 " 地位是很难的。然而,不少的 NFT 项目宣称自己是蓝筹项目,但它们是吗? Foot…

从零开始配置vim(29)——DAP 配置

首先给大家说一声抱歉,前段时间一直在忙换工作的事,包括但不限于交接、背面试题准备面试。好在最终找到了工作,也顺利入职了。期间也有朋友在催更,在这里我对关注本系列的朋友表示感谢。多的就不说了,我们正式进入vim …

【案例 5-1】 模拟订单号生成

【案例介绍】 1.任务描述 编写一个程序,模拟订单系统中订单号的生成。例如给定一个包括年月日以及毫秒值的 数组 arr{2019,0504,1101},将其拼接成字符串 s:[201905041101]。要求使用 String 类常用方 法来实现字符串的拼接。 2.运行结果 运行结果如图 5-1 所示 图…

【SRE】Linux加入AD域控

老牌企业一般因为安全要求或者历史遗留要求,会要求服务器加入AD域控 RHEL/CentOS/Ubuntu 加入 Windows ldap 域控 网上有各种各样的方法,很多复杂且模糊,操作到一大半发现没法推进,这个是亲测最好用的办法 使用pbis-open使Linux服…

关于Ubuntu ssh远程连接报错和无法root登录的解决方法

一、使用远程工具连接Ubuntu提示报错 MobaXterm v22.0 版本直接可以远程连接上(前提是sshd服务是开启的状态) 注意:须使用最新版本或较高版本的ssh远程连接工具,进行ssh连接;若使用较低版本的ssh远程连接工具&#xf…

MySQL产生死锁原因

阅读目录锁类型介绍死锁产生原因和示例1、产生原因2、产生示例案例一案例二案例三案例四案例五案例六锁类型介绍 MySQL 有三种锁的级别:页级、表级、行级 1 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大&#xff0c…

正则表达式(常用最新版)

密码 【1】密码必须为包含大小写字母和数字的组合,不能使用特殊字符,长度在6-10之间。 /^(?.*\\d)(?.*[a-z])(?.*[A-Z]).{6,10}$/ 【2】密码必须为包含大小写字母和数字的组合,可以使用特殊字符,长度在6-10之间。 /^(?.*[a-z]…

【快速上手系列】百度富文本编辑器的快速上手和简单使用

【快速上手系列】百度富文本编辑器的快速上手和简单使用 使用步骤 1、首先要把demo下载下来 demo链接: (18条消息) 百度富文本编辑器demo-Javascript文档类资源-CSDN文库 index.html:demo中的测试页面,可以看到很多方法使用 2、新建一个we…

【freeRTOS】操作系统之二-队列

在任何RTOS中,都具有一个重要的通信机制----消息队列。 ​ 队列是任务间通信的主要形式。**它们可用于在任务之间、中断和任务之间发送消息。**在大多数情况下,它们被用作线程安全的FIFO(先进先出)缓冲区,新数据被发送到队列的后面&#xff…

OpenCV图像处理——傅里叶变换

总目录 图像处理总目录←点击这里 十三、傅里叶变换 13.1、原理 我们生活在时间的世界中,早上7:00起来吃早饭,8:00去挤地铁,9:00开始上班。。。 以时间为参照就是时域分析。在频域中一切都是静止的 对傅里叶变换写的很好的一篇文章→ h…

【C++】队列来喽,真的很简单的

我们经历了那么多练习和顺序表,链表,栈的大风大浪,小小一个队列可以说简单至极了 练习,以及顺序表之类的文章都在我的主页哦,请认真学习之后再看本文 目录 1.队列的结构 2.实现 3.栈和队列的相互实现 1.队列的结构 …

Postgresql源码(88)column definition list语义解析流程分析

0 总结 如果调用函数时同时满足以下几种情况 在from后面。返回值为RECORD(或者是anyelement表示的RECORD)(anyelement的实际类型由入参决定,入参是RECORD,返回就是RECORD)。返回值被判定为TYPEFUNC_RECOR…

11.18 - 每日一题 - 408

每日一句:不如就利用孤单一人的时间,使自己变得更优秀,给来的人一个惊喜,也给自己一个好的交代 数据结构 1 当一棵有n个结点的二叉树按层次从上到下,同层次从左到右将结点中的数据存放在一维数组A[1…n]中…

Android App事件交互Event之模仿京东App实现下拉刷新功能(附源码 可直接使用)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一、正常下拉与下拉刷新的冲突处理 电商App的首页通常都支持下拉刷新,比如京东首页的头部轮播图一直顶到系统的状态栏,并且页面下拉到顶后,继续下拉会拉出带有下拉刷新字样的布局&#x…

leaflet教程039: 只显示一屏地图,设定范围不让循环延展

第039个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet只显示一屏地图,并且根据maxBounds和bounds的设定,来改变不同的地图呈现状态。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共68行)心得总结相…

[附源码]java毕业设计期刊在线投稿平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

小程序基础原理

前言 本文会围绕小程序的基础原理进行介绍。主要包括小程序的基础结构、编译、加载、通讯等几个方面。旨在阅读完毕后可以对小程序有一个基本的印象。 一、基础 对于用户来讲,小程序无需下载、用完即走、体验良好。 对于开发者来讲,小程序主要是区别…