从文件夹中选择上次修改的文件并进行压缩

时间:2014-08-06 06:46:36

标签: batch-file powershell

我有一个目录,定期创建日志文件。 我想获取最后创建的文件,压缩它并存储到目标目录。

目前,我只使用文件名来压缩文件访问权限 7z.exe是源目的地 现在,我需要使用Power Shell创建一个批处理文件来获取最近创建和压缩的文件。 请帮助。 我不是程序员。

2 个答案:

答案 0 :(得分:0)

试试这个。

$pathTo7zip = "<path to your copy of 7zip>\7z.exe"
$sourceFolder = "<path to your log folder>"
$destinationFolder = "<path to where you want to put the ZIP files>"

$newestSourceFileName = get-childitem -Path $sourceFolder | 
    where-object { -not $_.PSIsContainer } | 
    Sort-Object -Property CreationTime | 
    Select-Object -Last 1 -ExpandProperty Name

& $pathTo7zip a "$destinationFolder\logfile.zip" "$sourceFolder\$newestSourceFileName"

此脚本只有3个元素;

  1. 相关路径的定义

  2. 查找最近创建的文件的名称:

    get-childitem -path $sourceFolder - 返回源文件夹中的所有文件/文件夹

    where-object { -not $_.PSIsContainer } - 过滤掉任何文件夹对象

    Sort-Object -Property CreationTime - 按CreationTime的顺序对对象进行排序

    Select-Object -Last 1 -ExpandProperty Name - 选择列表中的第一项(即最新文件)并返回name属性

  3. 使用必要参数调用7Zip以创建ZIP文件。

答案 1 :(得分:0)

for /f %A in ('dir *.txt /b /a-d /o-d') do makecab "%A" "%~nA.cab" & goto :EOF

将获取最后一个文本文件并将其放入cab文件中。请参阅dir /?/t开关,以控制已修改/已创建。

在批处理文件中,使用%% A而不是命令提示符下使用的%A.