
求批处理:读取所有文件名赋值给变量,并且变量循环执行一条命令
有需求将IIS的W3C格式日志转换成NCSA的COMBINE格式,需要用到convlog1.exe一个命令行小软件,具体命令格式如下:convlog1.exe-id:\l...
有需求将IIS的W3C格式日志转换成NCSA的COMBINE格式,需要用到convlog1.exe一个命令行小软件,具体命令格式如下:
convlog1.exe -i d:\logw3c\ex110309.log -o d:\logncsa\ex110309.log -l comb
但是每次只能处理一个文件,还不支持通配符,有一堆旧的日志需要转换,所以求批处理,我只有30分,只能给这么多了,如果还有分,我会全给的,拜谢!
呵呵,我刚回答了几个问题,赚了点小钱,提高下悬赏,我一会再去回答几个,赚到继续提高悬赏,解决这个问题对我来说真的非常重要,就拜托大家啦!
另外提个思路,日志是按照日期排列的,文明是ex年月日.log,比如ex110309.log,貌似也可以读取文件夹下的第一个文件名,然后递增,但是我不会写批处理,求写好的批处理,拜谢! 展开
convlog1.exe -i d:\logw3c\ex110309.log -o d:\logncsa\ex110309.log -l comb
但是每次只能处理一个文件,还不支持通配符,有一堆旧的日志需要转换,所以求批处理,我只有30分,只能给这么多了,如果还有分,我会全给的,拜谢!
呵呵,我刚回答了几个问题,赚了点小钱,提高下悬赏,我一会再去回答几个,赚到继续提高悬赏,解决这个问题对我来说真的非常重要,就拜托大家啦!
另外提个思路,日志是按照日期排列的,文明是ex年月日.log,比如ex110309.log,貌似也可以读取文件夹下的第一个文件名,然后递增,但是我不会写批处理,求写好的批处理,拜谢! 展开
2个回答
展开全部
如果 命令行 可以这样写 就简单了:
convlog1.exe -i d:\logw3c\ex110309.log -o d:\logncsa\ -l comb
因为每行不一样的地方只有一处。
先在 d:\logw3c\ 下执行 tree /f > a.txt
然后用记事本打开 a.txt
显示:(类似这样)
Folder PATH listing
Volume serial number is 3B48-12F8
C:.
0001.log
0002.log
0003.log
0004.log
No subfolders exist
把两头没用的都删了 只留下中间有用的文件名。
然后查找替换: 把 四个空格 替换为 convlog1.exe -i d:\logw3c\ 就变成了
convlog1.exe -i d:\logw3c\0001.log
convlog1.exe -i d:\logw3c\0002.log
convlog1.exe -i d:\logw3c\0003.log
convlog1.exe -i d:\logw3c\0004.log
然后 再查找替换: 把 .log 替换为 .log -o d:\logncsa\ -l comb 就变成了
convlog1.exe -i d:\logw3c\0001.log -o d:\logncsa\ -l comb
convlog1.exe -i d:\logw3c\0002.log -o d:\logncsa\ -l comb
convlog1.exe -i d:\logw3c\0003.log -o d:\logncsa\ -l comb
convlog1.exe -i d:\logw3c\0004.log -o d:\logncsa\ -l comb
然后复制 粘贴到一个 cmd 框里面就能运行了。
如果 同一行里 必须指定两次文件名,那么还是写一个小的EXE处理一下吧。
convlog1.exe -i d:\logw3c\ex110309.log -o d:\logncsa\ -l comb
因为每行不一样的地方只有一处。
先在 d:\logw3c\ 下执行 tree /f > a.txt
然后用记事本打开 a.txt
显示:(类似这样)
Folder PATH listing
Volume serial number is 3B48-12F8
C:.
0001.log
0002.log
0003.log
0004.log
No subfolders exist
把两头没用的都删了 只留下中间有用的文件名。
然后查找替换: 把 四个空格 替换为 convlog1.exe -i d:\logw3c\ 就变成了
convlog1.exe -i d:\logw3c\0001.log
convlog1.exe -i d:\logw3c\0002.log
convlog1.exe -i d:\logw3c\0003.log
convlog1.exe -i d:\logw3c\0004.log
然后 再查找替换: 把 .log 替换为 .log -o d:\logncsa\ -l comb 就变成了
convlog1.exe -i d:\logw3c\0001.log -o d:\logncsa\ -l comb
convlog1.exe -i d:\logw3c\0002.log -o d:\logncsa\ -l comb
convlog1.exe -i d:\logw3c\0003.log -o d:\logncsa\ -l comb
convlog1.exe -i d:\logw3c\0004.log -o d:\logncsa\ -l comb
然后复制 粘贴到一个 cmd 框里面就能运行了。
如果 同一行里 必须指定两次文件名,那么还是写一个小的EXE处理一下吧。
更多追问追答
追问
不行,那个软件也是网上一个人写的,必须指定输出的目录+文件名。另外提个思路,日志是按照日期排列的,文明是ex年月日.log,比如ex110309.log,貌似也可以读取文件夹下的第一个文件名,然后递增,但是我不会写批处理,求写好的批处理,拜谢!
追答
我帮你写个EXE 吧,你匿名提问,我怎么给你发过去呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询