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

[日期时间] 【已解决】批处理循环中显示时间%time%都一样没有变化什么原因?

本帖最后由 pcl_test 于 2016-7-16 15:00 编辑

因工作需要,xcopy时需记录时间,但现在的问题就是如标题一样。但去掉xcopy一行后,回显时间就正常了。请教!!
以下是部分代码,时间要求起码秒上是有变化的。
  1. @echo off
  2. echo.
  3.       echo %date% %time% 停库备份数据库开始
  4.       xcopy "d:\Oracle\*.*" "e:\医信通\Oracle" /d/y/e/k/h/r/c
  5.       ping /n 5 127.1>nul
  6.       echo %date% %time% 停库备份数据库成功
  7. %0
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
目的,学习批处理

本帖最后由 hlzj88 于 2014-4-3 17:25 编辑

谢谢 这里为什么用!time!,不明白,再复习下。


明白了
目的,学习批处理

TOP

回复 6# hlzj88
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title 医信通停库数据库定时备份 不许关闭
  4. :bf
  5. rem 下句del是用于测试环境
  6. del 已备份.txt
  7. color 1f
  8. set sj=%time:~0,2%
  9. if %sj% neq 3 (
  10.     color 0f
  11.     del 已备份.txt>nul 2>nul
  12.     echo.
  13.     echo             警告:不要关闭
  14.     echo.
  15.     echo     计划备份时间为每晚3点范围内 程序处于检测等待状态(每45分钟检测一次)
  16.     echo.
  17.     echo     医信通数据库备份程序 现不在备份时间
  18.     ping /n 2700 127.1>nul
  19. ) else (
  20.     if exist 已备份.txt (
  21.         echo   已备份过 延时处理
  22.         ping /n 2700 127.1>nul
  23.         goto bf
  24.     ) else (
  25.         rem 停止yxt oracle服务  可能是有顺序的      
  26.         echo.>已备份.txt
  27.         net stop OracleServiceYXT
  28.         net stop OracleOraHome81TNSListener
  29.         net stop OracleOraHome81Agent
  30.         net stop OracleOraHome81HTTPServer
  31.         net stop OracleOraHome81DataGatherer
  32.         ping /n 5 127.1 >nul
  33.         echo.>>%date:~0,4%医信通停库备份记录.txt
  34.         echo %date% !time! 停库备份数据库开始>>%date:~0,4%医信通停库备份记录.txt
  35.         xcopy "d:\Oracle\*.*" "e:\医信通停库备份数据库\Oracle" /d/y/e/k/h/r/c
  36.         ping /n 5 127.1 >nul
  37.         echo %date% !time! 停库备份数据库成功>>%date:~0,4%医信通停库备份记录.txt
  38.         ping /n 5 127.1 >nul
  39.         rem 启动yxt oracle服务  可能是有顺序的
  40.         net start OracleOraHome81DataGatherer
  41.         net start OracleOraHome81HTTPServer
  42.         net start OracleOraHome81Agent
  43.         net start OracleOraHome81TNSListener
  44.         net start OracleServiceYXT
  45.     )
  46. )
  47. goto bf
复制代码
1

评分人数

    • hlzj88: 技术高 热心助人技术 + 1

TOP

谢谢 以上bat经测试,会产生一个无后缀的date文件,看不到文本里时间变化,将!替换为%后,文本内回显时间问题还是存在。
目的,学习批处理

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title 医信通停库数据库定时备份 不许关闭
  4. :bf
  5. rem 下句del是用于测试环境
  6. del 已备份.txt
  7. color 1f
  8. set sj=%time:~0,2%
  9. if %sj% neq 3 (
  10.     color 0f
  11.     del 已备份.txt>nul 2>nul
  12.     echo.
  13.     echo             警告:不要关闭
  14.     echo.
  15.     echo     计划备份时间为每晚3点范围内 程序处于检测等待状态(每45分钟检测一次)
  16.     echo.
  17.     echo     医信通数据库备份程序 现不在备份时间
  18.     ping /n 2700 127.1>nul
  19. ) else (
  20.     if exist 已备份.txt (
  21.         echo   已备份过 延时处理
  22.         ping /n 2700 127.1>nul
  23.         goto bf
  24.     ) else (
  25.         rem 停止yxt oracle服务  可能是有顺序的      
  26.         echo.>已备份.txt
  27.         net stop OracleServiceYXT
  28.         net stop OracleOraHome81TNSListener
  29.         net stop OracleOraHome81Agent
  30.         net stop OracleOraHome81HTTPServer
  31.         net stop OracleOraHome81DataGatherer
  32.         ping /n 5 127.1 >nul
  33.         echo.>>!date:~0,4!医信通停库备份记录.txt
  34.         echo !date! !time! 停库备份数据库开始>>!date:~0,4!医信通停库备份记录.txt
  35.         xcopy "d:\Oracle\*.*" "e:\医信通停库备份数据库\Oracle" /d/y/e/k/h/r/c
  36.         ping /n 5 127.1 >nul
  37.         echo !date! !time! 停库备份数据库成功>>!date:~0,4!医信通停库备份记录.txt
  38.         ping /n 5 127.1 >nul
  39.         rem 启动yxt oracle服务  可能是有顺序的
  40.         net start OracleOraHome81DataGatherer
  41.         net start OracleOraHome81HTTPServer
  42.         net start OracleOraHome81Agent
  43.         net start OracleOraHome81TNSListener
  44.         net start OracleServiceYXT
  45.     )
  46. )
  47. goto bf
复制代码

TOP

上面的net stop start,因为你们没有相关程序,有错误提示可以忽略。需要时间的原因是要记录并且能统计备份的基本时长,对另一个库是否采用这样备库做评估。
目的,学习批处理

TOP

本帖最后由 hlzj88 于 2014-4-3 10:29 编辑

谢谢
以下是修改后的内容
单就发帖的内容 上面的回复的确解决了问题,关键是修改我的整个bat后,还是不能正常回显。因此继续请教。
  1. @echo off
  2. title 医信通停库数据库定时备份 不许关闭
  3. :bf
  4. rem 下句del是用于测试环境
  5. del 已备份.txt
  6. color 1f
  7. set sj=%time:~0,2%
  8. 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 (
  9.       if exist 已备份.txt (echo   已备份过 延时处理&&ping /n 2700 127.1>nul&&goto bf) else (
  10.       rem 停止yxt oracle服务  可能是有顺序的      
  11.       echo.>已备份.txt
  12.       net stop OracleServiceYXT
  13.       net stop OracleOraHome81TNSListener
  14.       net stop OracleOraHome81Agent
  15.       net stop OracleOraHome81HTTPServer
  16.       net stop OracleOraHome81DataGatherer
  17.       ping /n 5 127.1 >nul
  18.       echo.>>%date:~0,4%医信通停库备份记录.txt
  19.       echo %date% %time% 停库备份数据库开始>>%date:~0,4%医信通停库备份记录.txt
  20.       xcopy "d:\Oracle\*.*" "e:\医信通停库备份数据库\Oracle" /d/y/e/k/h/r/c
  21.       ping /n 5 127.1 >nul
  22.       echo %date% %time% 停库备份数据库成功>>%date:~0,4%医信通停库备份记录.txt
  23.       ping /n 5 127.1 >nul
  24.       rem 启动yxt oracle服务  可能是有顺序的
  25.       net start OracleOraHome81DataGatherer
  26.       net start OracleOraHome81HTTPServer
  27.       net start OracleOraHome81Agent
  28.       net start OracleOraHome81TNSListener
  29.       net start OracleServiceYXT
  30.       ))
  31. goto bf
复制代码
目的,学习批处理

TOP

  1. @echo off
  2. :loop
  3. echo %date% %time% 停库备份数据库开始
  4. xcopy "d:\Oracle\*.*" "e:\医信通\Oracle" /d/y/e/k/h/r/c
  5. ping /n 5 127.1 >nul
  6. echo %date% %time% 停库备份数据库成功
  7. goto :loop
复制代码

TOP

返回列表