[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 20# 再世情緣
修改的代码我完全理解不了,要学的还好多啊

TOP

回复 20# 再世情緣

经过测试发现每个资源都始终只有一条,几个监视窗口倒是定时刷新了,但是写文件的循环不知道为何没生效,我水平有限,没查到原因呢。

TOP

回复 20# 再世情緣


    佩服佩服!!!!
我研究了大半宿刚刚知道怎么去开新窗口呢。之前的代码我都没想着能这么优化

TOP

本帖最后由 再世情緣 于 2013-12-10 07:26 编辑
  1. @echo off &color 0a &setlocal enabledelayedexpansion
  2. title 资源监视
  3. Rem 格式化date
  4. for /f "tokens=1,2" %%a in ("%date%") do (echo.%%a | findstr "星期" >nul &&set "date=!date: *=!" ||set "date=!date: 星期*=!")
  5. pushd "%cd%"
  6. rem 设置变量 Tm=循环时间,ds=创建监视进程偏移行数,tsk=任务偏移行数,谨慎修改!!!!!
  7. set /a "Tm=300","ds=27","tsk=35"
  8. :main
  9. rem 生成资源文件
  10. sures sures >sures.txt
  11. if not exist sures.txt (msg %username% /time:5 "错误!!未找到 sures.txt 文件!!!" &call exit)
  12. for /f "tokens=1,2,3 delims==" %%a in ('more "%~f0" +%tsk%') do (
  13.   set /a "i=0","j=0"
  14.   set "name=%%a" &set "tk1=%%b" &set "tk2=%%c"
  15.   if not exist "%computername%_!name!.txt" (echo.日期 时间 机器名 !name!使用数量^/!name!空余数量)>"%computername%_!name!.txt"
  16.   for /f "delims=" %%1 in ('findstr /i /c:"!tk1!" "sures.txt" 2^>nul') do (set /a "i+=1")
  17.   for /f "delims=" %%1 in ('findstr /i /c:"!tk2!" "sures.txt" 2^>nul') do (set /a "j+=1")
  18.   (echo.!date!  !time!   %computername%   !i!^/!j!)>>"%computername%_!name!.txt"
  19.   Rem 创建监视进程命令
  20.   if not exist "!name!.bat" ((more "%~f0" +!ds!)>"!name!.bat" )
  21.   Rem 运行监视进程命令
  22.   (tasklist /v | findstr /I "cmd.exe") | findstr /i "!name!" >nul || start "" "!name!.bat"
  23. )
  24. ping localhost -n %Tm% >nul
  25. cls &goto :main
  26. Rem 监视进程命令
  27. @echo off &color 0a
  28. title %~n0
  29. :ds
  30. type "%computername%_%~n0.txt"
  31. ping localhost -n 30 >nul
  32. cls &goto :ds
  33. Rem Tsk 任务
  34. Agent=_12     RES IN USE=_12  RES AVAILABLE
  35. Telephony=INLINE.*_8     RES IN USE=INLINE.*_8  RES AVAILABLE
  36. Ntdll=_15     RES IN USE=_15  RES AVAILABLE
  37. Datebase=_4     RES IN USE=_4  RES AVAILABLE
  38. Soap=_50     RES IN USE=_50  RES AVAILABLE
复制代码
优化之后的代码,运行之后,会生成5个对应的监视窗口,监视窗口30秒更新窗口,
关于格式化date,本人是win7 64位,%date% 格式是 yyyy/mm/dd   没有星期。。。。所以,无法验证,但是,理论上应该不会出错。。。

TOP

回复 18# fish509008


    你把16楼代码的第二行注释掉,把第三行的REM删掉,再试试。

TOP

回复 16# DAIC

感谢回复,你这个如果当前日期格式都不知道的情况下怎么去取值啊?因为写好的批处理文件是直接拷贝到其它服务器上去运行的,如果已经调查清楚,就不用这么麻烦了,直接%date:~0,10%或者%date:~4,10%就行了。

TOP

下面是多方修改我最终要使用的脚本。之前没注意统计电话时出现的问题,后来自己摸索又请教他人以解决。
现在还有一点小要求,怎么能运行时生成5个dos监控窗口,而不是在一个窗口里展示,因为在一个窗口时间长了监控不方便,还得去打开txt查看。
因为事赶的紧,自己没太多时间来深入学习了,如果有哪位大师看到这,烦请给点提示。谢谢!!!
  1. @echo off &color 0a &setlocal enabledelayedexpansion
  2. pushd "%cd%"
  3. rem 设置变量
  4. set Tm=300
  5. :main
  6. rem 初始化统计次数,每次循环都初始化,如果不需要,就放在 :main 标记前面
  7. set /a "a=b=c=d=e=f=g=h=i=j=0"
  8. rem 生成资源文件
  9. sures sures >sures.txt
  10. if not exist sures.txt (msg %username% /time:5 "错误!!未找到 sures.txt 文件!!!" &call exit)
  11. rem 生成agent资源使用情况统计文件
  12. if not exist "agent.txt" (echo.日期    时间 机器名 Agent使用数量/Agent空余数量)>"%computername%_agent.txt"
  13. for /f "delims=" %%a in ('findstr /i /c:"_12     RES IN USE" "sures.txt" 2^>nul') do (set /a "a+=1")
  14. for /f "delims=" %%a in ('findstr /i /c:"_12  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "b+=1")
  15. (echo.!date!  !time!   %computername%   !a!^/!b!)>>"%computername%_agent.txt"
  16. type "%computername%_agent.txt"
  17. rem 生成电话资源使用情况统计文件
  18. if not exist "telephony.txt" (echo.日期    时间 机器名 电话使用数量/电话空余数量)>"%computername%_telephony.txt"
  19. for /f "delims=" %%a in ('findstr  /rc:"INLINE.*_8     RES IN USE" "sures.txt" 2^>nul') do (set /a "c+=1")
  20. for /f "delims=" %%a in ('findstr  /rc:"INLINE.*_8  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "d+=1")
  21. (echo.!date!  !time!   %computername%   !c!^/!d!)>>"%computername%_telephony.txt"
  22. type "%computername%_telephony.txt"
  23. rem 生成动态库使用情况统计文件
  24. if not exist "ntdll.txt" (echo.日期    时间 机器名 动态库使用数量/动态库空余数量)>"%computername%_ntdll.txt"
  25. for /f "delims=" %%a in ('findstr /i /c:"_15     RES IN USE" "sures.txt" 2^>nul') do (set /a "e+=1")
  26. for /f "delims=" %%a in ('findstr /i /c:"_15  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "f+=1")
  27. (echo.!date!  !time!   %computername%   !e!^/!f!)>>"%computername%_Ntdll.txt"
  28. type "%computername%_ntdll.txt"
  29. rem 生成数据库使用情况统计文件
  30. if not exist "database.txt" (echo.日期    时间 机器名 数据库使用数量/数据库空余数量)>"%computername%_database.txt"
  31. for /f "delims=" %%a in ('findstr /i /c:"_4     RES IN USE" "sures.txt" 2^>nul') do (set /a "g+=1")
  32. for /f "delims=" %%a in ('findstr /i /c:"_4  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "h+=1")
  33. (echo.!date!  !time!   %computername%   !g!^/!h!)>>"%computername%_database.txt"
  34. type "%computername%_database.txt"
  35. rem 生成SOAP使用情况统计文件
  36. if not exist "soap.txt" (echo.日期    时间 机器名 SOAP使用数量/SOAP空余数量)>"%computername%_soap.txt"
  37. for /f "delims=" %%a in ('findstr /i /c:"_50     RES IN USE" "sures.txt" 2^>nul') do (set /a "i+=1")
  38. for /f "delims=" %%a in ('findstr /i /c:"_50  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "j+=1")
  39. (echo.!date!  !time!   %computername%   !i!^/!j!)>>"%computername%_soap.txt"
  40. type "%computername%_soap.txt"
  41. ping localhost -n %TM% >nul
  42. cls &goto :main
复制代码

TOP

data取值有的是"星期* YYYY-MM-DD",有的是"YYYY-MM-DD 星期* " 怎么去星期给去掉啊?
  1. @echo off
  2. set "str=星期五 2013-12-06"
  3. REM set "str=2013-12-06 星期五"
  4. set mydate=%str:* =%
  5. if %mydate% gtr 9 (
  6.     echo %str:~0,10%
  7. ) else (
  8.     echo %mydate%
  9. )
  10. pause
复制代码

TOP

回复 14# DAIC


    哎,菜鸟只能是想到什么问什么了。谢谢你补充的资料,已收藏,得慢慢研究

TOP

!date!,!time!和%date%,%time%有什么区别?

看教程:
http://www.bathome.net/thread-2899-1-1.html

TOP

回复 10# 再世情緣


    再请教你个问题!date!,!time!和%date%,%time%有什么区别?
   data取值有的是"星期* YYYY-MM-DD",有的是"YYYY-MM-DD 星期* " 怎么去星期给去掉啊?

TOP

回复 10# 再世情緣


    #83....好熟悉的感觉。你也玩大话的吗?还是梦幻

TOP

回复 10# 再世情緣


    嗯 昨天我已经自己找到原因了。谢谢啊

TOP

回复 9# fish509008
  1. @echo off &color 0a &setlocal enabledelayedexpansion
  2. pushd "%cd%"
  3. rem 设置变量
  4. set Tm=300
  5. :main
  6. rem 初始化统计次数,每次循环都初始化,如果不需要,就放在 :main 标记前面
  7. set /a "a=b=c=d=e=f=g=h=i=j=0"
  8. rem 生成资源文件
  9. sures sures >sures.txt
  10. if not exist sures.txt (msg %username% /time:5 "错误!!未找到 sures.txt 文件!!!" &call exit)
  11. rem 生成agent资源使用情况统计文件
  12. if not exist "agent.txt" (echo.日期 时间 机器名 Agent使用数量/空余数量)>"Agent.txt"
  13. for /f "delims=" %%a in ('findstr /i /c:"_12     RES IN USE" "sures.txt" 2^>nul') do (set /a "a+=1")
  14. for /f "delims=" %%a in ('findstr /i /c:"_12  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "b+=1")
  15. (@echo.!date! !time! %computername% !a!^/!b!)>>"Agent.txt"
  16. rem 生成电话资源使用情况统计文件
  17. if not exist "Telephony.txt" (echo.日期 时间 机器名 电话使用数量/空余数量)>"Telephony.txt"
  18. for /f "delims=" %%a in ('findstr /i /c:"_8     RES IN USE" "sures.txt" 2^>nul') do (set /a "c+=1")
  19. for /f "delims=" %%a in ('findstr /i /c:"_8  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "d+=1")
  20. (@echo.!date! !time! %computername% !c!^/!d!)>>"Telephony.txt"
  21. rem 生成动态库使用情况统计文件
  22. if not exist "Ntdll.txt" (echo.日期 时间 机器名 动态库使用数量/空余数量)>"Ntdll.txt"
  23. for /f "delims=" %%a in ('findstr /i /c:"_15     RES IN USE" "sures.txt" 2^>nul') do (set /a "e+=1")
  24. for /f "delims=" %%a in ('findstr /i /c:"_15  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "f+=1")
  25. (@echo.!date! !time! %computername% !e!^/!f!)>>"Ntdll.txt"
  26. rem 生成数据库使用情况统计文件
  27. if not exist "database.txt" (echo.日期 时间 机器名 数据库使用数量/空余数量)>"Database.txt"
  28. for /f "delims=" %%a in ('findstr /i /c:"_4     RES IN USE" "sures.txt" 2^>nul') do (set /a "g+=1")
  29. for /f "delims=" %%a in ('findstr /i /c:"_4  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "h+=1")
  30. (@echo.!date! !time! %computername% !g!^/!h!)>>"Database.txt"
  31. rem 生成SOAP使用情况统计文件
  32. if not exist "SOAP.txt" (echo.日期 时间 机器名 SOAP使用数量/空余数量)>"SOAP.txt"
  33. for /f "delims=" %%a in ('findstr /i /c:"_50     RES IN USE" "sures.txt" 2^>nul') do (set /a "i+=1")
  34. for /f "delims=" %%a in ('findstr /i /c:"_50  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "j+=1")
  35. (@echo.!date! !time! %computername%! !i!^/!j!)>>"SOAP.txt"
  36. ping localhost -n %TM% >nul
  37. cls &goto :main
复制代码
哥们,以后论坛添加代码请用代码块包起来,便于复制,你这个。。。。我复制之后,删除前面的行数都花了好大一会儿#83
  不用杉树 sures.txt,代码中的 sures sures >sures.txt 每次循环都会重新写 sures.txt
  另外,你说的不会生成后面的文件。。。是你延时太长了。。。你每生成一个文件都延时5分钟。。。你这总共5个文件,循环一次都要25分钟了。。。

TOP

已经缺人删除掉就可以了。定时任务暂时也没问题
另外我又添加了其它几种资源的统计。但是测试时好像只有第一个agent资源统计能生效
是不是需要在批处理中另外开启窗口来执行这个动作?

下面是我修改的脚本。有空的话能帮我审查下吗?

1        @echo off &color 0a &setlocal enabledelayedexpansion
2        pushd "%cd%"
3        rem 设置变量
4        set /a "a=b=c=d=e=f=g=h=i=j=0"
5        set Tm=300
6        :main
7        rem 生成资源文件
8        sures sures >sures.txt
9        if not exist sures.txt (msg %username% /time:5 "错误!!未找到 sures.txt 文件!!!" &call exit)
10        rem 生成agent资源使用情况统计文件
11        if not exist "agent.txt" (echo.日期        时间        机器名        Agent使用数量/Agent空余数量)>"Agent.txt"
12        for /f "delims=" %%a in ('findstr /i /c:"_12     RES IN USE" "sures.txt" 2^>nul') do (set /a "a+=1")
13        for /f "delims=" %%a in ('findstr /i /c:"_12  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "b+=1")
14        (@echo.!date!        !time!         %computername%        !a!^/!b!)>>"Agent.txt"
15        type "Agent.txt"
16        ping localhost -n %TM% >nul
17        rem 生成电话资源使用情况统计文件
18        if not exist "Telephony.txt" (echo.日期        时间        机器名        电话使用数量/电话空余数量)>"Agent.txt"
19        for /f "delims=" %%a in ('findstr /i /c:"_8     RES IN USE" "sures.txt" 2^>nul') do (set /a "c+=1")
20        for /f "delims=" %%a in ('findstr /i /c:"_8  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "d+=1")
21        (@echo.!date!        !time!         %computername%        !c!^/!d!)>>"Telephony.txt"
22        type "Telephony.txt"
23        ping localhost -n %TM% >nul
24        rem 生成动态库使用情况统计文件
25        if not exist "Ntdll.txt" (echo.日期        时间        机器名        动态库使用数量/动态库空余数量)>"Ntdll.txt"
26        for /f "delims=" %%a in ('findstr /i /c:"_15     RES IN USE" "sures.txt" 2^>nul') do (set /a "e+=1")
27        for /f "delims=" %%a in ('findstr /i /c:"_15  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "f+=1")
28        (@echo.!date!        !time!         %computername%        !c!^/!d!)>>"Ntdll.txt"
29        type "Ntdll.txt"
30        ping localhost -n %TM% >nul
31        rem 生成数据库使用情况统计文件
32        if not exist "database.txt" (echo.日期        时间        机器名        数据库使用数量/数据库空余数量)>"database.txt"
33        for /f "delims=" %%a in ('findstr /i /c:"_4     RES IN USE" "sures.txt" 2^>nul') do (set /a "g+=1")
34        for /f "delims=" %%a in ('findstr /i /c:"_4  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "h+=1")
35        (@echo.!date!        !time!         %computername%        !c!^/!d!)>>"database.txt"
36        type "database.txt"
37        ping localhost -n %TM% >nul
38        rem 生成SOAP使用情况统计文件
39        if not exist "soap.txt" (echo.日期        时间        机器名        SOAP使用数量/SOAP空余数量)>"soap.txt"
40        for /f "delims=" %%a in ('findstr /i /c:"_50     RES IN USE" "sures.txt" 2^>nul') do (set /a "i+=1")
41        for /f "delims=" %%a in ('findstr /i /c:"_50  RES AVAILABLE" "sures.txt" 2^>nul') do (set /a "j+=1")
42        (@echo.!date!        !time!         %computername%        !c!^/!d!)>>"soap.txt"
43        type "soap.txt"
44        ping localhost -n %TM% >nul
45        del/Q sures.txt
46        cls &goto :main

TOP

返回列表