3

我经常使用各种 shell 脚本创建日志/报告文件。这很好,但大多数时候我只需要简单地看一下内容——通常是同一天或最多一周后。

我想做的是能够将文件标记为过期,因此在给定的时间段后,文件要么被删除,要么被移动到存档目录。

由于我可以控制文件的创建,我当然可以给它一个特定的扩展名,例如 .SEF 并编写一个服务来定期解析我硬盘上的目录,但这似乎有点笨拙。

我还研究了自定义文件属性:

http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/173ab6de-3cd8-448f-8c42-de9d2240b913

但是我需要写一些东西来将文件属性添加到文件中。所以在 Powershell/SFU 或类似的:

cat JobOutput.txt | grep -e Error | expire > report.txt

或普通的旧窗户:

type JobOutput.txt | findstr Error | expire > report.txt

有没有人远程做过这样的事情?

编辑:

我上面描述的只是我想做的事情的一个方面。例如,您可能希望发送一封电子邮件,该电子邮件需要在一定时限内回复,然后在该时间限制后被删除。

另一个示例可能是您发布的文档,其中包含您不希望在给定时间后使用的临时系统解决方法的详细信息。

当然,我们现在对各种应用程序的变幻莫测,但自定义文件属性的想法看起来很有希望和吸引力。问题当然是如何将它们应用于每种文件类型......

现在,我很高兴根据我最初提出的问题来关闭它,在这种情况下,我可以定义一个自定义扩展,它会被预定的作业清除。

解决方案:

好的,我决定使用 Powershell 解决方案(稍作调整),因为我对此非常熟悉:

$HowManyDays = 15  
$LastWrite = (Get-Date).AddDays(-$HowManyDays)  
Get-ChildItem -recurse -include *.sef |     
Where {$_.LastWriteTime -le "$LastWrite"} |     
Remove-Item 

非常感谢您对此的帮助。

4

4 回答 4

1

如果您对 Alex K. 提供的内容相当满意,那么它应该很容易调整。

创建一个 cmd 文件,当你调用它时传入文件搜索模式,如果是这样,*.*那就这样吧。

在 cmd 文件调用中:

robocopy "c:\from" "c:\to" /s %1 /MINAGE:7 /MOV 

请参阅:如何将命令行参数传递给批处理文件?

于 2012-09-24T21:01:22.030 回答
0

我们在 Powershell 中使用一个小脚本通过任务调度程序来删除超过 15 天的日志。

您可以删除文件或移动它们。这是脚本:


$HowManyDays = 15

$LastWrite = (Get-Date).AddDays(-$HowManyDays)

Get-ChildItem *.log |
    Where {$_.LastWriteTime -le "$LastWrite"} |
    Remove-Item

于 2012-08-30T11:33:58.020 回答
0

我也会去预定的调用。

如果您不喜欢调用 Powershell 或下载 robocopy,您可以坚持使用命令行单行:

forfiles /p "C:\Path" /m *.log /d -7 /c "cmd /c del @file"

我对其进行了调整并将其烘焙成一批,我可以安排它来清理任何文件夹+子文件夹。仅供参考,这将为您提供以下内容:

forfiles /p "C:\Path" /m *.* /d -7 /c "cmd /c if [@isdir]==[TRUE] rmdir @file /s /q"
于 2012-09-24T22:10:08.207 回答
0

您有两个问题: 1. 如何指示哪些文件应该“过期”。2.如何(快速)找到过期文件。

对于 1,您需要确定文件扩展名是否是可接受的方法,或者是否需要使用某些自定义文件属性,以及是否将其存储在 NTFS 文件系统中或嵌入文件内容中。

对于 2,您可以使用例如 locate32 创建索引,但这只会让您根据扩展名快速查找文件;自定义属性已经过时——除非您想获取源来定位32 并添加索引自定义属性的能力。它可能非常有用(例如,在 DLL 中具有自定义属性或版本的 Word 文档)。另一种建立索引的方法是在“to be expired”目录中创建指向要过期的文件的符号链接。

实际删除是微不足道的,您可以使用此处发布的任何解决方案;使用索引只是可以更快地找到过期文件。

于 2012-09-26T15:48:38.170 回答