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

[文本处理] 如何将记录网管日志的批处理改的更完善些?

此段批处理代码是用来记录网管日志的,主要功能:输入处理的问题和情况,自动将其添加到IP地址为168.178.0的D盘根目录下的日志.txt内,代码如下:
  1. @echo off
  2. :loop
  3. set /p wt=[请输入刚才所处理问题]:
  4. set /p cl=[请输入处理情况]:
  5. @set zf=%wt% %cl% %time%
  6. @echo %zf% >>\\168.168.178.0\d$\日志.txt
  7. echo :::您输入日志已纪录到Sever
  8. goto loop
复制代码
经过测试,D盘日志.txt显示结果如下:
-------------------------------------------------------
阿什顿将扩大后视镜肯定会健康大使科技等黄金卡是打火机卡稍等哈接口打算科技等后即可贺卡上解放 2222222222222222  0:32:04.17   
-------------------------------------------------------
数字2之前全部都是我所输入的"刚才所处理问题"..数字2是"处理情况".现在我有个想法,但是自己无法去实现,因为批处理我才刚刚入门而已,菜鸟..呵呵各位老师见笑了,我想让D盘日志.txt结果显示为这样,如下:
--------------------------------------------------------------
您所输入的问题: 阿什顿将扩大后视镜肯定会健康大使科技等黄金卡是打火机卡稍等哈接口打算科技等后即可贺卡上解放
您所输入的处理情况: 2222222222222222
输入时间:0:32:04.17

---------------------------------------------------------------
然而这条命令是叠加的,就是可以重复输入至文件"日志.txt"内,如果重复输入的话,我希望D盘日志.txt结果显示为这样,如下(以两次为例):
--------------------------------------------------------------
您所输入的问题: 阿什顿将扩大后视镜肯定会健康大使科技等黄金卡是打火机卡稍等哈接口打算科技等后即可贺卡上解放
您所输入的处理情况: 2222222222222222
输入时间:0:32:04.17

您所输入的问题: 阿什顿将扩大后视镜肯定会健康大使科技等黄金卡是打火机卡稍等哈接口打算科技等后即可贺卡上解放
您所输入的处理情况: 2222222222222222
输入时间:0:32:44.59

-----------------------------------------------------------------

不知道各位老师是否了解了我所需求的效果.希望各位老师能帮帮忙..让菜鸟我也学习学习...
补充一下,就是能否让D盘日志.txt结果显示出来后,排列的整齐些..
比如说这样:
----------------------------------------------
您所输入的问题:       阿什顿将扩大后视镜肯定会健康大使科技等黄金卡是打火机卡稍等哈接口打算科技等后即可贺卡上解放
您所输入的处理情况: 2222222222222222
输入时间:               0:32:04.17

您所输入的问题:       阿什顿将扩大后视镜肯定会健康大使科技等黄金卡是打火机卡稍等哈接口打算科技等后即可贺卡上解放
您所输入的处理情况: 2222222222222222
输入时间:               0:32:44.59
------------------------------------------------------------

谢谢楼上的补充.呵呵..

TOP

本帖最后由 xlybzk 于 2011-7-6 14:51 编辑
  1. @echo off
  2. :loop
  3. set /p wt=请输入故障问题:
  4. rem:输入变量赋值给wt这个值,然后参数/p是必须敲回车
  5. 参数/p是将变量数值设成用户输入的数值
  6. set /p cl=请输入处理思路:
  7. rem:输入变量赋值给cl这个值,然后参数/p是必须敲回车
  8. set /p dl=请输入处理结果:
  9. rem:输入变量赋值给dl这个值,然后参数/p是必须敲回车
  10. set zf1=故障问题: %wt%
  11. rem:将变量wt的值赋给zf1
  12. set zf2=处理思路: %cl%
  13. rem:将变量cl的值赋给zf2
  14. set zf3=处理结果: %dl%
  15. rem:将变量dl的值赋给zf3
  16. set zf4=处理时间:%time%
  17. rem:将当前时间time的值赋给zf4
  18. (echo.%zf1%
  19. echo.%zf2%
  20. echo.%zf3%
  21. echo.%zf4%
  22. echo.)>>\\192.168.1.25\d\日志.txt
  23. rem:将以上所有变量整合,以()包括起来,变量前的echo.是回车的意思其实不加.也是回车的意思,全部发送至指定地点,>>表示添加
  24. echo.是输出空行,因为有的符号在CMD下是不显示的“.”是其中一个
  25. echo :::您输入日志已记录
  26. rem:在这里echo表示回显:::您输入日志已记录
  27. echo.
  28. rem:这里也是回车的意思
  29. goto loop
  30. rem:跳转至 :loop
复制代码
不对的我在你后面有补充

TOP

我为了学习,就将这段代码的意思添加至批处理里,现在贴出来,让版主看看,是否解释有误
  1. @echo off
  2. :loop
  3. set /p wt=请输入故障问题:
  4. rem:输入变量赋值给wt这个值,然后参数/p是必须敲回车
  5. set /p cl=请输入处理思路:
  6. rem:输入变量赋值给cl这个值,然后参数/p是必须敲回车
  7. set /p dl=请输入处理结果:
  8. rem:输入变量赋值给dl这个值,然后参数/p是必须敲回车
  9. set zf1=故障问题: %wt%
  10. rem:将变量wt的值赋给zf1
  11. set zf2=处理思路: %cl%
  12. rem:将变量cl的值赋给zf2
  13. set zf3=处理结果: %dl%
  14. rem:将变量dl的值赋给zf3
  15. set zf4=处理时间:%time%
  16. rem:将当前时间time的值赋给zf4
  17. (echo.%zf1%
  18. echo.%zf2%
  19. echo.%zf3%
  20. echo.%zf4%
  21. echo.)>>\\192.168.1.25\d\日志.txt
  22. rem:将以上所有变量整合,以()包括起来,变量前的echo.是回车的意思其实不加.也是回车的意思,全部发送至指定地点,>>表示添加
  23. echo :::您输入日志已记录
  24. rem:在这里echo表示回显:::您输入日志已记录
  25. echo.
  26. rem:这里也是回车的意思
  27. goto loop
  28. rem:跳转至 :loop
复制代码

TOP

COOL...
将所需的一些输出变量以括弧进行打包,然后一起发送或者说添加至指定地点或目录
这样就可以简化代码了....
版主...thanks for you

TOP

8# ask0199


输出内容时,可以用对整个语块的重定向来简化代码和提高效率:
  1. (echo %zf1%
  2. echo %zf2%
  3. echo %zf3%
  4. echo %zf4%
  5. echo.)>>\\10.9.32.96\d\日志.txt
复制代码

TOP

好了,谢谢楼上的点津....
  1. @echo off
  2. :loop
  3. set /p wt=请输入故障问题:
  4. set /p cl=请输入处理思路:
  5. set /p dl=请输入处理结果:
  6. set zf1=故障问题: %wt%
  7. set zf2=处理思路: %cl%
  8. set zf3=处理结果: %dl%
  9. set zf4=处理时间: %time%
  10. echo %zf1% >>\\10.9.32.96\d\日志.txt
  11. echo %zf2% >>\\10.9.32.96\d\日志.txt
  12. echo %zf3% >>\\10.9.32.96\d\日志.txt
  13. echo %zf4% >>\\10.9.32.96\d\日志.txt
  14. echo.>>\\10.9.32.96\d\日志.txt
  15. echo. :::您输入日志已纪录到Sever
  16. echo.
  17. goto loop
复制代码
这样就可以完美实现我所需要的了

TOP

本帖最后由 xlybzk 于 2011-7-5 15:00 编辑
但是有一点,如果输入第二次的话,第二次的输出结果紧跟在第一次的后面,能否两次输出的结果中间隔开,这样方便于阅读呢?
如下:
------------原批处理输出结果----------------------
处理问题: 2222222222222222  
...
ask0199 发表于 2011-7-5 14:41

你自己都说出答案了,既然第一次和第二次之间要用一行隔开,那多加一条输出一个空行命令不就行了

TOP

本帖最后由 hucuibai 于 2011-7-12 11:14 编辑
  1. @echo off
  2. :loop
  3. set /p wt=请输入刚才所处理问题:
  4. set /p cl=请输入处理情况:
  5. echo 处理问题: %wt%  >>日志.txt
  6. echo处理情况: %cl%>>日志.txt
  7. echo 处理时间: %time% >>日志.txt
  8. echo,>>日志.txt
  9. echo :::您输入日志已纪录到Sever
  10. goto loop
复制代码
1

评分人数

    • zm900612: 老会员不应忘记把代码code起来哦PB -2

TOP

但是有一点,如果输入第二次的话,第二次的输出结果紧跟在第一次的后面,能否两次输出的结果中间隔开,这样方便于阅读呢?
如下:
------------原批处理输出结果----------------------
处理问题: 2222222222222222  
处理情况: 33333333333333333333333  
处理时间: 14:38:02.42  
处理问题: 444444444444444444  
处理情况: 555555555555555555  
处理时间: 14:38:17.24  
--------------------------------------
希望输出为这样
-------------------------------------
处理问题: 2222222222222222  
处理情况: 33333333333333333333333  
处理时间: 14:38:02.42  

处理问题: 444444444444444444  
处理情况: 555555555555555555  
处理时间: 14:38:17.24  
--------------------------------------------
第一次和第二次之间用一行隔开

TOP

  1. @echo off
  2. :loop
  3. set /p wt=请输入刚才所处理问题:
  4. set /p cl=请输入处理情况:
  5. set zf1=处理问题: %wt%
  6. set zf2=处理情况: %cl%
  7. set zf3=处理时间: %time%
  8. echo %zf1% >>日志.txt
  9. echo %zf2% >>日志.txt
  10. echo %zf3% >>日志.txt
  11. echo :::您输入日志已纪录到Sever
  12. goto loop
复制代码

TOP

谢谢版主的及时提醒,下次不会再犯了

TOP

本帖最后由 zm900612 于 2011-7-5 09:09 编辑

感谢主动修改标题,修改后已经符合版规要求,故将本楼原警告贴删除

TOP

返回列表