我有一个目录,定期创建日志文件。 我想获取最后创建的文件,压缩它并存储到目标目录。
目前,我只使用文件名来压缩文件访问权限 7z.exe是源目的地 现在,我需要使用Power Shell创建一个批处理文件来获取最近创建和压缩的文件。 请帮助。 我不是程序员。
答案 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个元素;
相关路径的定义
查找最近创建的文件的名称:
get-childitem -path $sourceFolder
- 返回源文件夹中的所有文件/文件夹
where-object { -not $_.PSIsContainer }
- 过滤掉任何文件夹对象
Sort-Object -Property CreationTime
- 按CreationTime的顺序对对象进行排序
Select-Object -Last 1 -ExpandProperty Name
- 选择列表中的第一项(即最新文件)并返回name
属性
使用必要参数调用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.