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

[日期时间] 批处理按文件创建时间压缩

目前有一个批处理,会将所有的.log压缩。
  1. @echo off
  2. set dat=%date:~0,4%%date:~5,2%%date:~8,2%
  3. C:\Progra~1\WinRAR\rar a -u -ta%dat% -sm51000000 -inul -y F:\baklog\test_log_%date:~0,4%%date:~5,2%%date:~8,2%.rar *.log
复制代码
求高手将其修改为,只压缩其中最早被创建的的100个文件。

其中.log文件是按文件的创建时间来命名的例如:Test.20130305_093714_387.log、Test.20130305_093834_219.log

要求根据当前系统时间为压缩后的文件名, 例如:test_log_2013030511.zip

感谢。

  1. @echo off
  2. set /a num=0
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in ('dir /b *.log ^| findstr /v ".snapshot.log$"') do (
  5.     set /a num+=1
  6. move /y %%a "E:\batTest\temp"
  7. )
  8. "D:\Program Files (x86)\7-Zip\7zG.exe" a E:\batTest\zip\t-server_log_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%.zip E:\batTest\temp\*.log
  9. del /s /q E:\batTest\temp\*.log
复制代码
今天自己写的一些代码,可以将所有的.log文件压缩并删除。

TOP

  1. @echo off
  2. set /a num=0
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in ('dir /b *.log ^| findstr /v ".snapshot.log$"') do (
  5.    
  6. if !num! == "100"(
  7. goto compFile
  8. )
  9. set /a num+=1
  10. move /y %%a "E:\batTest\temp"
  11. )
  12. :compFile
  13. "D:\Program Files (x86)\7-Zip\7zG.exe" a E:\batTest\zip\t-server_log_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%.zip E:\batTest\temp\*.log
  14. del /s /q E:\batTest\temp\*.log
复制代码
求解。 为什么添加if 语句后无法正常运行。

我希望可以移动100个文件后跳出for in 进行压缩删除操作。

TOP

本帖最后由 apang 于 2013-3-5 21:07 编辑

压缩创建日期最早的100个文件
  1. @echo off
  2. set "rar=C:\Program Files\WinRAR\WinRAR.exe"
  3. set "pth=%~p0"
  4. wmic datafile where "drive='%~d0' and path='%pth:\=\\%' and extension='log'" get CreationDate,Name>$
  5. for /f "tokens=1*" %%a in ('sort $') do (
  6.   if /i not "%%a"=="CreationDate" (
  7.     set /a "n+=1,1/(101-n)" 2>nul||(del $&goto :eof)
  8.     "%rar%" a -afzip -agYYYYMMDDHH -ibck "F:\baklog\test_log_" "%%~nxb"
  9.   )
  10. )
复制代码

TOP

回复 4# apang

谢谢你的代码,
如果再次运行的时候, 不能够将新的.log文件添加到刚才的生成的压缩包中,请问需要如何修改。

TOP

回复 5# bill_shen


     你的思维很让人费解。
对不起,我没法帮你

TOP

返回列表