标题: [日期时间] 求助批处理复制当前日期前一天的文件 [打印本页]
作者: frfeng 时间: 2021-2-6 16:43 标题: 求助批处理复制当前日期前一天的文件
求助老师:
想实现把指定目录下当前日期前一天的文件复制到另一目录下替换指定文件。
当前数据库文件为
①C:\Program Files\Kingdee\K3Cloud\DeskClient\Retail_Client\mtaposinfo.db
以上文件偶尔会坏损,会报错,所以需要将前一天的备份文件替换此文件
数据库备份文件(程序自动每天备份)放在以下文件夹,每天会产生两个备份文件,
分别为【mtaposinfo_日期_start_.db】和【mtaposinfo_日期_stop_.db】
用前一个带start的文件恢复。
②C:\Program Files\Kingdee\K3Cloud\DeskClient\Retail_Client\DBBackup\mtaposinfo_日期_start_.db
也就是说如果当前数据库文件①坏了,程序就报错,
然后希望执行一个批处理:
用备份的前一天的②的文件替换①的文件,
替换完,名称为mtaposinfo.db
比如今天是2021-2-1,程序出错了(数据库文件坏了)
那么希望用②里边的mtaposinfo_2021-1-31_start_.db来替换①里边的mtaposinfo.db
感谢各位老师!!!
作者: went 时间: 2021-2-6 22:21
保存bat文件,asni编码- @echo off & cd /d "%~dp0"
- REM 管理员权限
- %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
- REM 当前数据库文件
- set "curDB=C:\Program Files\Kingdee\K3Cloud\DeskClient\Retail_Client\mtaposinfo.db"
- REM 数据库备份文件夹
- set "backDir=C:\Program Files\Kingdee\K3Cloud\DeskClient\Retail_Client\DBBackup"
- REM 获取前一天日期
- set "lastDay="
- set "code=mshta "javascript:var d=new Date();d.setDate(d.getDate()-1);new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(''+d.getFullYear()+('00'+(d.getMonth()+1)).replace(/^.*(.{2})$/,'$1')+('00'+d.getDate()).replace(/^.*(.{2})$/,'$1'));window.close();""
- for /f "delims=" %%i in ('%code%') do set "lastDay=%%i"
- set "recoverDB=%backDir%\mtaposinfo_%lastDay%_start_.db"
- echo 当前日期: %DATE%
- echo 前一天: %lastDay%
- echo 目标文件: %curDB%
- echo 恢复文件: %recoverDB%
- if exist "%recoverDB%" (
- copy /y "%recoverDB%" "%curDB%"
- ) else (
- echo 未找到: %recoverDB%
- )
- pause&exit
复制代码
作者: frfeng 时间: 2021-2-7 10:37
回复 2# went
感谢went老师回复,完美实现
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |