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

[特效代码] 如何在执行cmd命令同时在窗口中动态显示已用时间?

想法很简单,就是cmd在执行命令时,如何让我的窗口能动态显示当前时间或者已运行用时,要只做一个显示当前时间的批处理很容易,但是要在动态更新当前时间的情况下同时不影响其它命令的运行就不知道怎么做了。
如下图所示,如何在执行查询C盘文件的同时显示已查询时间呢?

各位大虾,能否提供下解决方案或解决思路

我只是来看看而己呀...................

TOP

再生成一个cmd窗口,一个用来计时,一个用来处理命令当然可以,但总觉得这个方法不太好。

TOP

多线程的问题,目前是BAT的硬伤之一。当然很多脚本程序都有这问题。
不过如果你用for来做,每个循环都计算一次时间,也是可以的,只是效率很低就是了。

TOP

用start /b 做的一个,不过在某些秒数时,set  /a 会出错,因此废掉了2句柄。出现的问题是,有时候会停顿2-3秒。
修改了查找telnet进程无法结束子进程问题,使用AT,需要开启计划服务。

a.bat
  1. @echo off&SETLOCAL ENABLEDELAYEDEXPANSION
  2. set tm=%time%
  3. echo 正在查找目录下exe文件个数,请稍后...
  4. set/p=已经进行了     0秒<nul
  5. start /b b.bat
  6. :::::::::::::::::
  7. dir d:\ /s >nul
  8. rem 或者你自己的代码
  9. :::::::::::::::::
  10. at 12:00 /next:28 #exit >nul 2>nul
  11. ping -n 3 127.1 >nul
  12. echo;
  13. echo 查找结束。
  14. pause>nul
复制代码
b.bat
  1. @echo off&SETLOCAL ENABLEDELAYEDEXPANSION
  2. cd. 2>nul 3>nul
  3. for /f "tokens=1-3 delims=:." %%a in ('echo %tm%') do set /a h=%%a,m=%%b,s=%%c
  4. :loop
  5. for /f "tokens=1-3 delims=:." %%a in ('echo %time%') do set /a hh=%%a,mm=%%b,ss=%%c
  6. set /a hd=hh-h,md=mm-m,sd=ss-s
  7. set /a ts=hd*3600+md*60+sd
  8. for /l %%i in (0,1,3) do (
  9.         set "py=!ts:~%%i,1!"
  10.         if not {!py!}=={} set /p=<nul
  11. )
  12. set/p=<nul
  13. set/p=%ts%秒<nul
  14. ping -n 1 127.1>nul
  15. at |findstr "#" &&(at /del /y & %%b)
  16. goto :loop
复制代码

[ 本帖最后由 caruko 于 2010-8-8 11:23 编辑 ]

TOP

如果只动态显示,可以用三方ConsExt.exe
start "NewThread" /b ConsExt.exe /showtime 61 0 0 10 8 "本地时间:"

TOP

回复 5楼 的帖子

谢谢caruko兄给予的解答,这样大动干戈的来解决这个小问题,貌似有点喧宾夺主的意思。
我用几行代码来实现查找文件的功能,而用几十行的代码来实现已用时间的累积……
不是很完美,不过bat的多线程看来确实是不好解决啊

仍旧谢谢您用心的回复%

TOP

不是我想要的

TOP

返回列表