VBS脚本可删除早于n天的文本文件

尼姆罗德

我要删除n天前创建的某个目录中的所有文本文件。将其视为家务任务。

我目前有一个脚本可以很好地完成此任务,但是它使用文件的创建日期。现在,我必须检查文件名中的日期,并删除所有与script参数匹配的文本文件。

' Objective: To delete old files from a given folder and all subfolders below
'
'
' Format: cscript deloldfiles.vbs {DriveLetter:\FolderName} {#ofDays}
'     or: cscript deloldfiles.vbs {\\servername\FolderName} {#ofDays}
' Example: cscript deloldfiles.vbs c:\dba\log 3
'    (deletes files older than 3 days from the \dba\log file on drive C:)

Set objArgs = WScript.Arguments
FolderName =objArgs(0)
Days=objArgs(1)

set fso = createobject("scripting.filesystemobject")
set folders = fso.getfolder(FolderName)
datetoday = now()
newdate = dateadd("d", Days*-1, datetoday)
wscript.echo "Today:" & now()
wscript.echo "Started deleting files older than :" & newdate 
wscript.echo "________________________________________________"
wscript.echo ""
recurse folders 
wscript.echo ""
wscript.echo "Completed deleting files older than :" & newdate 
wscript.echo "________________________________________________"

sub recurse( byref folders)
  set subfolders = folders.subfolders
  set files = folders.files
  wscript.echo ""
  wscript.echo "Deleting Files under the Folder:" & folders.path
  wscript.echo "__________________________________________________________________________"
  for each file in files
    if file.datelastmodified < newdate then
      wscript.echo "Deleting " & folders.path & "\" & file.name & " last modified: " & file.datelastmodified
      on error resume next
' === to test this script but not actually delete files, comment out the next line ===
    file.delete
    end if

  next  

  for each folder in subfolders
    recurse folder
  next  

  set subfolders = nothing
  set files = nothing

end sub

文字档:

SynchroniseUsersFromBBS_LOG_20140910_412.txt
SynchroniseUsersFromBBS_LOG_20140810_1023.txt
SynchroniseUsersFromBBS_LOG_20141010_1523.txt
SynchroniseUsersFromBBS_LOG_20141022_1023.txt
SynchroniseUsersFromBBS_LOG_20141023_1023.txt

任何想法如何做到这一点?

霍克·埃克哈德

如果您的样品名称具有代表性,则可以使用Mid()和DateSerial()从文件名获取日期(使用正确的类型):

>> s = "SynchroniseUsersFromBBS_LOG_20140910_412.txt"
>> d = DateSerial(CLng(Mid(s, 29, 4)), CLng(Mid(s, 33, 2)), CLng(Mid(s, 35, 2)))
>> WScript.Echo s, "=>", TypeName(d), d
>>
SynchroniseUsersFromBBS_LOG_20140910_412.txt => Date 10.09.2014
>>

如果没有,则必须使用RegExp-基于文件名的更详细描述。

PS:

没有RegExp,但是通过InStr(Rev)具有更大的灵活性:

>> s = "FromBBS_LOG_20140910_412.txt"
>> p = InStrRev(s, "_") - 8
>> d = DateSerial(CLng(Mid(s, p, 4)), CLng(Mid(s, p + 4, 2)), CLng(Mid(s, p + 6, 2)))
>> WScript.Echo s, "=>", TypeName(d), d
>>
FromBBS_LOG_20140910_412.txt => Date 10.09.2014
>>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果日期早于30天,请使用bash删除文本文件中的行

来自分类Dev

删除文本文件的脚本

来自分类Dev

使用vbs从文本文件中删除nul字符

来自分类Dev

Bash脚本删除早于N天的文件,但排除某些文件夹中的文件

来自分类Dev

批处理文件可删除超过N天的文件,并将结果另存为文本文件

来自分类Dev

从文本文件VBS读取内容

来自分类Dev

如何使VBS从文本文件读取?

来自分类Dev

bash shell脚本可以打开较少的文本文件,然后从脚本执行较少的命令吗?

来自分类Dev

删除大文本文件的前n行

来自分类Dev

删除大文本文件的前n行

来自分类Dev

删除文本文件中没有\ n的行

来自分类Dev

使用VBS替换文本文件中的文本

来自分类Dev

从文本文件中删除文本

来自分类Dev

BASH脚本可搜索4位数字且早于7天的文件夹中的文件

来自分类Dev

键入文本文件的脚本

来自分类Dev

从文本文件中删除^ M

来自分类Dev

批量删除文本文件的行

来自分类Dev

解析文本文件并删除空白

来自分类Dev

从文本文件中删除记录

来自分类Dev

从文本文件中删除空行

来自分类Dev

删除文本文件中的行

来自分类Dev

删除文本文件的偶数行

来自分类Dev

删除导入的文本文件 (Python)

来自分类Dev

删除文本文件中的内容

来自分类Dev

尝试编写脚本,从文本文件中的通配符删除文件

来自分类Dev

批处理脚本可将文件夹中的所有文件列出为文本文件,而无需重复

来自分类Dev

删除所有早于X天的文件

来自分类Dev

Bash脚本-如何从文本文件中删除行/单词?

来自分类Dev

脚本:如何删除文本文件中的十六进制字符串