标题: [特效代码] 如何在执行cmd命令同时在窗口中动态显示已用时间? [打印本页]
作者: 0428_hai 时间: 2010-8-7 23:20 标题: 如何在执行cmd命令同时在窗口中动态显示已用时间?
想法很简单,就是cmd在执行命令时,如何让我的窗口能动态显示当前时间或者已运行用时,要只做一个显示当前时间的批处理很容易,但是要在动态更新当前时间的情况下同时不影响其它命令的运行就不知道怎么做了。
如下图所示,如何在执行查询C盘文件的同时显示已查询时间呢?
各位大虾,能否提供下解决方案或解决思路
作者: fkeqqkpdc 时间: 2010-8-7 23:31
我只是来看看而己呀...................
作者: 0428_hai 时间: 2010-8-7 23:32
再生成一个cmd窗口,一个用来计时,一个用来处理命令当然可以,但总觉得这个方法不太好。
作者: caruko 时间: 2010-8-8 01:00
多线程的问题,目前是BAT的硬伤之一。当然很多脚本程序都有这问题。
不过如果你用for来做,每个循环都计算一次时间,也是可以的,只是效率很低就是了。
作者: caruko 时间: 2010-8-8 02:40
用start /b 做的一个,不过在某些秒数时,set /a 会出错,因此废掉了2句柄。出现的问题是,有时候会停顿2-3秒。
修改了查找telnet进程无法结束子进程问题,使用AT,需要开启计划服务。
a.bat- @echo off&SETLOCAL ENABLEDELAYEDEXPANSION
- set tm=%time%
- echo 正在查找目录下exe文件个数,请稍后...
- set/p=已经进行了 0秒<nul
- start /b b.bat
- :::::::::::::::::
- dir d:\ /s >nul
- rem 或者你自己的代码
- :::::::::::::::::
-
- at 12:00 /next:28 #exit >nul 2>nul
- ping -n 3 127.1 >nul
- echo;
- echo 查找结束。
- pause>nul
复制代码
b.bat- @echo off&SETLOCAL ENABLEDELAYEDEXPANSION
- cd. 2>nul 3>nul
- for /f "tokens=1-3 delims=:." %%a in ('echo %tm%') do set /a h=%%a,m=%%b,s=%%c
- :loop
- for /f "tokens=1-3 delims=:." %%a in ('echo %time%') do set /a hh=%%a,mm=%%b,ss=%%c
- set /a hd=hh-h,md=mm-m,sd=ss-s
- set /a ts=hd*3600+md*60+sd
- for /l %%i in (0,1,3) do (
- set "py=!ts:~%%i,1!"
- if not {!py!}=={} set /p=<nul
- )
- set/p=<nul
- set/p=%ts%秒<nul
- ping -n 1 127.1>nul
- at |findstr "#" &&(at /del /y & %%b)
- goto :loop
复制代码
[ 本帖最后由 caruko 于 2010-8-8 11:23 编辑 ]
作者: ZJHJ 时间: 2010-8-8 10:11
如果只动态显示,可以用三方ConsExt.exe
start "NewThread" /b ConsExt.exe /showtime 61 0 0 10 8 "本地时间:"
作者: 0428_hai 时间: 2010-8-9 20:44 标题: 回复 5楼 的帖子
谢谢caruko兄给予的解答,这样大动干戈的来解决这个小问题,貌似有点喧宾夺主的意思。
我用几行代码来实现查找文件的功能,而用几十行的代码来实现已用时间的累积……
不是很完美,不过bat的多线程看来确实是不好解决啊
仍旧谢谢您用心的回复%
作者: jt4211 时间: 2016-1-1 16:05
不是我想要的
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |