Board logo

标题: [文件操作] [已解决]怎么让批处理的所有命令执行后生成日志文件? [打印本页]

作者: starzen    时间: 2011-3-25 10:54     标题: [已解决]怎么让批处理的所有命令执行后生成日志文件?

各位大虾,小弟最近初学批处理。
由于工作的特殊需要,要在批处理执行完毕后生成一个Log文件,记录所有批处理命令的执行情况,是否成功以及对多少文件执行了该命令。
还望各位高手能帮帮忙,小弟在此先谢谢各位了。
作者: batman    时间: 2011-3-25 11:16

请问楼主你自己能搞清楚在生成日志前批处理要进行的操作不?

if you know (
   please tell everybody
   ) else (
   please think again
)
作者: starzen    时间: 2011-3-25 11:45

有很多命令:
md
move
echo
...

我试了一种生成log的方法(但是这种方法只能用于"move"命令):
就是在执行"move"后面加了一个>>zz.log
zz.log里面输出了“移动了多少文件,并且也有移动文件的清单”,
但是还有一种特殊情况,就是移动一个文件,zz.log里面居然只显示“移动了几个文件”却没有"移动了哪个文件的清单"

我是想问一下,批处理有没有自带的输出log文件的命令。
作者: batman    时间: 2011-3-25 11:50

我是想问一下,批处理有没有自带的输出log文件的命令。

很抱歉,没有。。。

但是如果代码中所有的命令都是有屏幕输出信息的,就可以用重定向到文本的方法来生成log
作者: starzen    时间: 2011-3-25 12:02

好吧,谢谢前辈
作者: CrLf    时间: 2011-3-25 13:12

这样不知道可不可以,试试在代码前加上这五行:
[code]
@echo off>nul 2>nul 3>log.txt 4>log.txt
for /f "skip=5 eol= delims=" %%a in (%~s0) do (
   echo %%a
   cmd /c %%a
)
[code]
作者: tmplinshi    时间: 2011-3-25 16:59

本帖最后由 tmplinshi 于 2011-3-25 18:13 编辑
  1. @echo on 1>nul 2>nul 3>log.txt 4>&3
复制代码
放到批处理第一行。不过这样会显示命令本身。
作者: starzen    时间: 2011-3-25 17:19

这样不知道可不可以,试试在代码前加上这五行:

@echo off>nul 2>nul 3>log.txt 4>log.txt
for /f "skip=5 eol= delims=" %%a in (%~s0) do (
   echo %%a
   cmd /c %%a
)

zm900612 发表于 2011-3-25 13:12

看不懂,你会伤心么?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者: caruko    时间: 2011-3-26 15:27

很无语,直接把echo off去掉
然后假如 这个批处理文件名是 test.bat,那么 test.bat >log.txt 就行了
或者加入批处理代码是这样

1: @echo off
2: ......
...............
100: exit

那么前后加括号
(
1: :echo off 这行去掉
2: ......
.............
100: exit
)>log.txt
作者: Batcher    时间: 2011-3-27 12:12

8# starzen


不懂就问啊,伤心有神马用?
作者: CrLf    时间: 2011-3-27 13:06

好吧,我伤透心了...^_^




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2