标题: [日期时间] 【已解决】批处理循环中显示时间%time%都一样没有变化什么原因? [打印本页]
作者: hlzj88 时间: 2014-4-2 11:33 标题: 【已解决】批处理循环中显示时间%time%都一样没有变化什么原因?
本帖最后由 pcl_test 于 2016-7-16 15:00 编辑
因工作需要,xcopy时需记录时间,但现在的问题就是如标题一样。但去掉xcopy一行后,回显时间就正常了。请教!!
以下是部分代码,时间要求起码秒上是有变化的。- @echo off
- echo.
- echo %date% %time% 停库备份数据库开始
- xcopy "d:\Oracle\*.*" "e:\医信通\Oracle" /d/y/e/k/h/r/c
- ping /n 5 127.1>nul
- echo %date% %time% 停库备份数据库成功
- %0
复制代码
作者: DAIC 时间: 2014-4-2 12:25
- @echo off
- :loop
- echo %date% %time% 停库备份数据库开始
- xcopy "d:\Oracle\*.*" "e:\医信通\Oracle" /d/y/e/k/h/r/c
- ping /n 5 127.1 >nul
- echo %date% %time% 停库备份数据库成功
- goto :loop
复制代码
作者: hlzj88 时间: 2014-4-2 13:20
本帖最后由 hlzj88 于 2014-4-3 10:29 编辑
谢谢
以下是修改后的内容
单就发帖的内容 上面的回复的确解决了问题,关键是修改我的整个bat后,还是不能正常回显。因此继续请教。- @echo off
- title 医信通停库数据库定时备份 不许关闭
- :bf
- rem 下句del是用于测试环境
- del 已备份.txt
- color 1f
- set sj=%time:~0,2%
- if %sj% neq 3 (color 0f&&del 已备份.txt>nul 2>nul&&echo.&&echo 警告:不要关闭&&echo.&&echo 计划备份时间为每晚3点范围内 程序处于检测等待状态(每45分钟检测一次)&&echo.&&echo 医信通数据库备份程序 现不在备份时间&&ping /n 2700 127.1>nul) else (
- if exist 已备份.txt (echo 已备份过 延时处理&&ping /n 2700 127.1>nul&&goto bf) else (
- rem 停止yxt oracle服务 可能是有顺序的
- echo.>已备份.txt
- net stop OracleServiceYXT
- net stop OracleOraHome81TNSListener
- net stop OracleOraHome81Agent
- net stop OracleOraHome81HTTPServer
- net stop OracleOraHome81DataGatherer
- ping /n 5 127.1 >nul
- echo.>>%date:~0,4%医信通停库备份记录.txt
- echo %date% %time% 停库备份数据库开始>>%date:~0,4%医信通停库备份记录.txt
- xcopy "d:\Oracle\*.*" "e:\医信通停库备份数据库\Oracle" /d/y/e/k/h/r/c
- ping /n 5 127.1 >nul
- echo %date% %time% 停库备份数据库成功>>%date:~0,4%医信通停库备份记录.txt
- ping /n 5 127.1 >nul
- rem 启动yxt oracle服务 可能是有顺序的
- net start OracleOraHome81DataGatherer
- net start OracleOraHome81HTTPServer
- net start OracleOraHome81Agent
- net start OracleOraHome81TNSListener
- net start OracleServiceYXT
- ))
- goto bf
复制代码
作者: hlzj88 时间: 2014-4-3 10:37
上面的net stop start,因为你们没有相关程序,有错误提示可以忽略。需要时间的原因是要记录并且能统计备份的基本时长,对另一个库是否采用这样备库做评估。
作者: DAIC 时间: 2014-4-3 11:16
- @echo off
- setlocal enabledelayedexpansion
- title 医信通停库数据库定时备份 不许关闭
- :bf
- rem 下句del是用于测试环境
- del 已备份.txt
- color 1f
- set sj=%time:~0,2%
- if %sj% neq 3 (
- color 0f
- del 已备份.txt>nul 2>nul
- echo.
- echo 警告:不要关闭
- echo.
- echo 计划备份时间为每晚3点范围内 程序处于检测等待状态(每45分钟检测一次)
- echo.
- echo 医信通数据库备份程序 现不在备份时间
- ping /n 2700 127.1>nul
- ) else (
- if exist 已备份.txt (
- echo 已备份过 延时处理
- ping /n 2700 127.1>nul
- goto bf
- ) else (
- rem 停止yxt oracle服务 可能是有顺序的
- echo.>已备份.txt
- net stop OracleServiceYXT
- net stop OracleOraHome81TNSListener
- net stop OracleOraHome81Agent
- net stop OracleOraHome81HTTPServer
- net stop OracleOraHome81DataGatherer
- ping /n 5 127.1 >nul
- echo.>>!date:~0,4!医信通停库备份记录.txt
- echo !date! !time! 停库备份数据库开始>>!date:~0,4!医信通停库备份记录.txt
- xcopy "d:\Oracle\*.*" "e:\医信通停库备份数据库\Oracle" /d/y/e/k/h/r/c
- ping /n 5 127.1 >nul
- echo !date! !time! 停库备份数据库成功>>!date:~0,4!医信通停库备份记录.txt
- ping /n 5 127.1 >nul
- rem 启动yxt oracle服务 可能是有顺序的
- net start OracleOraHome81DataGatherer
- net start OracleOraHome81HTTPServer
- net start OracleOraHome81Agent
- net start OracleOraHome81TNSListener
- net start OracleServiceYXT
- )
- )
- goto bf
复制代码
作者: hlzj88 时间: 2014-4-3 11:32
谢谢 以上bat经测试,会产生一个无后缀的date文件,看不到文本里时间变化,将!替换为%后,文本内回显时间问题还是存在。
作者: DAIC 时间: 2014-4-3 14:03
回复 6# hlzj88 - @echo off
- setlocal enabledelayedexpansion
- title 医信通停库数据库定时备份 不许关闭
- :bf
- rem 下句del是用于测试环境
- del 已备份.txt
- color 1f
- set sj=%time:~0,2%
- if %sj% neq 3 (
- color 0f
- del 已备份.txt>nul 2>nul
- echo.
- echo 警告:不要关闭
- echo.
- echo 计划备份时间为每晚3点范围内 程序处于检测等待状态(每45分钟检测一次)
- echo.
- echo 医信通数据库备份程序 现不在备份时间
- ping /n 2700 127.1>nul
- ) else (
- if exist 已备份.txt (
- echo 已备份过 延时处理
- ping /n 2700 127.1>nul
- goto bf
- ) else (
- rem 停止yxt oracle服务 可能是有顺序的
- echo.>已备份.txt
- net stop OracleServiceYXT
- net stop OracleOraHome81TNSListener
- net stop OracleOraHome81Agent
- net stop OracleOraHome81HTTPServer
- net stop OracleOraHome81DataGatherer
- ping /n 5 127.1 >nul
- echo.>>%date:~0,4%医信通停库备份记录.txt
- echo %date% !time! 停库备份数据库开始>>%date:~0,4%医信通停库备份记录.txt
- xcopy "d:\Oracle\*.*" "e:\医信通停库备份数据库\Oracle" /d/y/e/k/h/r/c
- ping /n 5 127.1 >nul
- echo %date% !time! 停库备份数据库成功>>%date:~0,4%医信通停库备份记录.txt
- ping /n 5 127.1 >nul
- rem 启动yxt oracle服务 可能是有顺序的
- net start OracleOraHome81DataGatherer
- net start OracleOraHome81HTTPServer
- net start OracleOraHome81Agent
- net start OracleOraHome81TNSListener
- net start OracleServiceYXT
- )
- )
- goto bf
复制代码
作者: hlzj88 时间: 2014-4-3 14:39
本帖最后由 hlzj88 于 2014-4-3 17:25 编辑
谢谢 这里为什么用!time!,不明白,再复习下。
明白了
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |