[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[日期时间] 求助批处理复制当前日期前一天的文件

求助老师
      想实现把指定目录下当前日期前一天的文件复制到另一目录下替换指定文件。
   
     当前数据库文件为
     ①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

感谢各位老师!!!

保存bat文件,asni编码
  1. @echo off & cd /d "%~dp0"
  2. REM 管理员权限
  3. %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
  4. REM 当前数据库文件
  5. set "curDB=C:\Program Files\Kingdee\K3Cloud\DeskClient\Retail_Client\mtaposinfo.db"
  6. REM 数据库备份文件夹
  7. set "backDir=C:\Program Files\Kingdee\K3Cloud\DeskClient\Retail_Client\DBBackup"
  8. REM 获取前一天日期
  9. set "lastDay="
  10. 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();""
  11. for /f "delims=" %%i in ('%code%') do set "lastDay=%%i"
  12. set "recoverDB=%backDir%\mtaposinfo_%lastDay%_start_.db"
  13. echo 当前日期: %DATE%
  14. echo   前一天: %lastDay%
  15. echo 目标文件: %curDB%
  16. echo 恢复文件: %recoverDB%
  17. if exist "%recoverDB%" (
  18. copy /y "%recoverDB%" "%curDB%"
  19. ) else (
  20. echo   未找到: %recoverDB%
  21. )
  22. pause&exit
复制代码

TOP

回复 2# went


   感谢went老师回复,完美实现

TOP

返回列表