2014-10-31 6 views
0

특정 파일이 c : \ users *. *의 하위 폴더 \ DESKTOP에있는 폴더 및 하위 폴더에있는 경우 코드를 작성하려고했습니다. 모든 사용자 디렉토리). 파일이 폴더에 있으면 스크립트는 파일을 삭제합니다.폴더 및 하위 폴더의 특정 파일 확인 및 삭제

Option Explicit 

Dim Shell, FSO, DesktopPath 
Dim objShortcutFile, objDesktopFolder, objDesktopSubFolder, Folder, strSysDrive 

Set Shell = CreateObject("WScript.Shell") 
Set FSO = CreateObject("Scripting.FileSystemObject") 

strSysDrive = Shell.ExpandEnvironmentStrings("%SystemDrive%") 

Set Folder = FSO.GetFolder(strSysDrive & "\Users") 
msgbox Folder & "\sample1.lnk" 
    For Each objDesktopFolder in Folder.SubFolders 

     If FSO.FileExists(Folder & "\sample1.lnk") Then 

      FSO.DeleteFile Folder & "\sample1.lnk" 
      msgbox "success" 

     Else 

      msgbox "not existing" 

     End If 
    Next 
+0

그리고 뭐가 궁금한가요? – Bond

+0

"C : \ users"에 파일을 복사하지 않으면 스크립트가 작업을 수행하지 않습니다. 나는 그것을 수행하는 방법에 대한 샘플이 필요하다. wmi를 사용하여 c : \ users *. * (= 모든 사용자 디렉토리)의 하위 폴더 \ DESKTOP에서 검색 할 수 있다면 생각 중이다. – xka

+0

'For Each objDesktopFolder .. Next' 루프 내에서'Folder & "\ sample1.lnk"대신'objDesktopFolder.Path & "\ sample1.lnk"를 사용하십시오 – JosefZ

답변

1

FolderC:\Users 폴더 개체이고; objDesktopFolder은 각 폴더의 폴더 개체입니다 (예 : C:\Users). C : \ Users \ user1 - 더 이상 하위 폴더가 아닙니다. C : \ Users \ user1 \ Desktop (바탕 화면 폴더가 아니기 때문에 오해의 소지가있는 이름입니다.) If FSO.FileExists(Folder & "\sample1.lnk") Then

에 : If FSO.FileExists(FSO.BuildPath(objDesktopFolder.Path, "Desktop\sample1.lnk")) Then

당신은 또한 원하는 경우에

당신은 그럼 그냥이 라인 (그 경로를 사용하는 다른 라인)을 변경, 바탕 화면에 직접보고 싶은 경우 바탕 화면에 존재할 수있는 각 폴더를 살펴보고 같은 종류의 로직을 수행해야합니다.

Option Explicit 

Dim Shell, FSO, DesktopPath 
Dim objShortcutFile, objDesktopFolder, objDesktopSubFolder, Folder, strSysDrive 
Dim filepath, userfolder, desktop, subfolder, filename 

Set Shell = CreateObject("WScript.Shell") 
Set FSO = CreateObject("Scripting.FileSystemObject") 

strSysDrive = Shell.ExpandEnvironmentStrings("%SystemDrive%") 

Set Folder = FSO.GetFolder(strSysDrive & "\Users") 
msgbox Folder & "\sample1.lnk" 
filename = "sample1.lnk" 
For Each userfolder in Folder.SubFolders 
    desktop = FSO.BuildPath(userfolder.Path, "Desktop") 
    filepath = FSO.BuildPath(desktop, filename) 
    If FSO.FolderExists(desktop) Then 
     ' Delete file on desktop 
     If FSO.FileExists(filepath) Then 
      FSO.DeleteFile filepath, True 
      MsgBox "Success: deleted " & filepath 
     Else 
      MsgBox filepath & " doesn't exist" 
     End If 
     ' Check folders on desktop 
     For Each subfolder In FSO.GetFolder(desktop).SubFolders 
      filepath = FSO.BuildPath(subfolder.Path, filename) 
      If FSO.FileExists(filepath) Then 
       FSO.DeleteFile filepath, True 
       MsgBox "Success: deleted " & filepath 
      End If 
     Next 
    End If 
Next 

이렇게하면 바탕 화면의 폴더 (물론 데스크톱의 파일)에서 파일을 찾을 수 있습니다. 하위 폴더의 추가 수준을 살펴 보려면 재귀를 사용하여 하위 폴더의 모든 수준을 통과하는 별도의 하위를 만드는 것이 가장 좋습니다.

+0

안녕하세요, 고마워요. 서브 폴더를 추가로 만들 것입니다. – xka