2013-08-16 2 views
0

다음 스크립트를 수정하여 위치, 날짜 스탬프 및 확장자를 하드 코딩하지 않도록하고 명령 프롬프트에서 이러한 세부 정보를 입력 변수로 지정할 수 있습니다 (예 : "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 

답변

0

cscript 명령이 정상적으로 표시됩니다. 당신이 실제 날짜로 날짜 값을 구문 분석 할 필요가 있으므로 그런 다음, 그들은 모두 문자열,

location = WScript.Arguments.Item(0) 
date-stamp = WScript.Arguments.Item(1) 
extension = WScript.Arguments.Item(2) 

주 인수를 포착하기 위해 VBScript를이를 추가 할 수 있습니다.

+0

이 수정 후에 스크립트가 어떻게 보이게되었는지 조언 해 주시겠습니까? –

+1

@McSenstrum "date-stamp"는 유효한 변수 이름이 아닙니다. 인덱스 검사없이 .Arguments 컬렉션에 액세스하는 것은 위험합니다. –