标题: [文件操作] 【已解决】批处理如何根据文件名将文件压缩 [打印本页]
作者: bill_shen 时间: 2013-2-25 10:44 标题: 【已解决】批处理如何根据文件名将文件压缩
本帖最后由 bill_shen 于 2013-3-5 11:25 编辑
1、有一应用软件会不停的产生log,文明命名采用任意字符 + . + 系统时间 + .snapshot来产生,例如(Test.20130225_093714_387.snapshot.log)
2、单log文件到2M,会将原有文件重名为:Test.20130225_093714_387.log,并根据当前系统时间创建新的log文件, Test.20130225_093904_231.snapshot.log,如此反复.
3、由于系统数据量增加,每小时会产生数百个log。
请帮忙写一个批处理,可以将相同小时的log压缩到一起,例如
Test.20130225_093714_387.log、 Test.20130225_093904_231.log 压缩为20130225_09.zip
Test.20130225_101724_322.log、 Test.20130225_101801_529.log 压缩为20130225_10.zip
感谢。。。
作者: apang 时间: 2013-2-25 15:24
本帖最后由 apang 于 2013-2-25 15:27 编辑
- fPath = "d:\log"
- '待压缩的log文件所在目录
- Rar = "C:\Program Files\WinRAR\winrar.exe"
- 'winrar安装路径
- Set Ws = CreateObject("Wscript.Shell")
- Set FSO = CreateObject("Scripting.FileSystemObject")
- For Each File in FSO.GetFolder(fPath).Files '遍历文件
- Set Re = New RegExp '建立正则表达式
- Re.IgnoreCase = True '忽略大小写
- Re.Pattern = "^test\.(\d{8}_\d{2})\d{4}_\d{3}\.log$"
- '正则表达式模式
- For Each a in Re.Execute(File.Name) '遍历匹配集合
- Zip = fPath & "\" & a.SubMatches(0) & ".zip"
- '压缩后的文件路径及文件名
- Ws.Run """" & Rar & """ a -afzip -ep """ & Zip &_
- """ """ & File & """",0,True
- '调用winrar压缩
- Next
- Set Re = Nothing
- Next
复制代码
保存为test.vbs,试试
作者: Batcher 时间: 2013-2-25 21:12
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b *.log ^| findstr /v ".snapshot.log$"') do (
- set filename=%%a
- 7z.exe a "!filename:~-23,-12!.zip" "%%a"
- )
复制代码
作者: group 时间: 2013-2-26 02:07
本帖最后由 group 于 2013-2-26 02:09 编辑
- @echo off
- setlocal enabledelayedexpansion
- set "rar=!ProgramFiles!\WinRAR\rar.exe"
- for %%a in (*.log) do (
- set "var=%%a"
- set ar[!var:~-24,12!]=1
- )
- for /f "tokens=2 delims=[]" %%a in ('set ar[') do (
- %rar% a "%%a.rar" "*%%a????_???.log"
- )
- pause
复制代码
作者: bill_shen 时间: 2013-2-28 15:07
谢谢各位的帮忙!
刚才试过了,挺好用的
运行后发现如果有一个.log文件在被其他程序打开的时候,就不能将这个文件进行压缩。
批处理是否可以判断这个文件正在被其他程序使用或打开呢?
如果可以,请告知,
谢谢。
作者: bill_shen 时间: 2013-2-28 15:09
回复 4# group
谢谢,不过压缩的文件名有点问题
作者: bill_shen 时间: 2013-2-28 15:10
回复 2# apang
非常感谢,不过我们老大说只可以用批处理来写,不过还是非常感谢
作者: CrLf 时间: 2013-2-28 15:14
回复 5# bill_shen
如果不能直接压缩使用中的文件,那 xcopy 一个临时文件夹就好了
作者: bill_shen 时间: 2013-3-5 11:24
回复 8# CrLf
谢谢!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |