::设置关闭批处理回显、设置cmd标题
@echo off & title Copy the file according to the modification date
cd /d %~dp0
setlocal enabledelayedexpansion
::获取当前时间NowDate,格式为202112021323样式
set NowDate=%date:~,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%
:设定原文件的文件路径
SET address1=D:\Software\XXXX
:设定需要存放到的目标共享盘路径
SET address2=\\192.168.15.XXX\XXX
::echo输出语句,当想输出SET的变量值时,需要在变量前后加上%vale%
:共享盘的IP地址
SET IPaddress=\\192.168.15.XXX
:共享盘密码
SET Password=XXXX
:共享盘用户名
SET User=XXX
::连接共享文件
net use "%IPaddress%" "%Password%" /user:"%User%"
::dir /a-d /b /tw 表示读取所在位置的文件名称为文本格式
for /f "delims=" %%a in ('dir /a-d /b /tw') do (
::这行没看懂,/f是用于解析文件中的内容,delims为切割函数,切割掉=后面所附值的之后的内容,这里的%%a指的是变量,相当于命名的一个变量a
if not "%%~fa"=="%~f0" (
::%%~ta获取日期/时间
set FileDate=%%~ta
::格式化FileDate为上面NowDate同样式%%~ta,标识获取上面文件的修改日期原本的FileDate样式为2022\08\30 16:48,这里的\不占用位置,将FileDate的值格式变为:202208301648类型
set FileDate=!FileDate:~,4!!FileDate:~5,2!!FileDate:~8,2!!FileDate:~11,2!!FileDate:~14,2!
::拿格式化后文件修改时间和当前时间作比较,相同则复制文件到today文件夹下。
if !FileDate!==!NowDate! xcopy "%%~a" "%address2%" /k /y /c
)
)
:echo FileDate=!FileDate!
:echo NowDate=!NowDate!
:这里需要使用!xxx!来进行获取两变量的延迟值,进行查看
:pause
::关闭cmd窗口,想查看输出结果可以将exit改pause,cmd窗口将不进行关闭操作。
exit
上面的脚本使用txt编辑好后,将文件的后缀名改为bat
注意:该bat执行脚本只能放在想要复制的文件夹下,指定目录盘还没有调试出来。
如果为了不每次运行时弹窗,可以使用下面的静默方式运行。
下面的使用txt编辑好后,将文件的后缀名改为VBS
Set shell = Wscript.createobject("wscript.shell")
:下面为bat脚本的绝对地址。
a = shell.run ("C:\Users\xxx.bat",0)
编译好后可以使用windows的任务计划程序进行运行,达到自动运行的效果
在该位置可以设定重复的时间和按什么时间进行重复执行程序。