使用vbs删除没有硬编码变量的文件
问题描述:
如何修改以下脚本以避免硬编码位置,日期戳记和扩展名,并在命令提示符中将这些详细信息指定为输入变量,例如“cscript del.vbs d:\ temp 16/08/2013 jpg“。使用vbs删除没有硬编码变量的文件
OPTION EXPLICIT
DIM strExtensionsToDelete,strFolder
DIM objFSO, MaxAge, IncludeSubFolders
' ************************************************************
' Setup
' ************************************************************
' Folder to delete files
strFolder = "d:\test\"
' Delete files from sub-folders?
includeSubfolders = TRUE
' A comma separated list of file extensions
' Files with extensions provided in the list below will be deleted
strExtensionsToDelete = "jpg"
' Max File Age (in Days). Files older than this will be deleted.
maxAge = 1
' ************************************************************
SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")
DeleteFiles strFolder,strExtensionsToDelete, maxAge, includeSubFolders
wscript.echo "Finished"
SUB DeleteFiles(BYVAL strDirectory,BYVAL strExtensionsToDelete,BYVAL maxAge,includeSubFolders)
DIM objFolder, objSubFolder, objFile
DIM strExt
SET objFolder = objFSO.GetFolder(strDirectory)
FOR EACH objFile in objFolder.Files
FOR EACH strExt in SPLIT(UCASE(strExtensionsToDelete),",")
IF RIGHT(UCASE(objFile.Path),LEN(strExt)+1) = "." & strExt THEN
IF objFile.DateLastModified < (NOW - MaxAge) THEN
wscript.echo "Deleting:" & objFile.Path & " | " & objFile.DateLastModified
objFile.Delete
EXIT FOR
END IF
END IF
NEXT
NEXT
IF includeSubFolders = TRUE THEN ' Recursive delete
FOR EACH objSubFolder in objFolder.SubFolders
DeleteFiles objSubFolder.Path,strExtensionsToDelete,maxAge, includeSubFolders
NEXT
END IF
END SUB
答
您的cscript命令看起来没问题。 然后,将它添加到您的VBScript来捕捉参数
location = WScript.Arguments.Item(0)
date-stamp = WScript.Arguments.Item(1)
extension = WScript.Arguments.Item(2)
注意,它们都是字符串,所以你需要将日期值解析到实际日期。
你能够通过这个修改建议剧本的外观吗? –
@McSenstrum“日期戳记”不是变量名称;访问没有索引检查的.Arguments集合是危险的。 –