Folder
는 C:\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
이렇게하면 바탕 화면의 폴더 (물론 데스크톱의 파일)에서 파일을 찾을 수 있습니다. 하위 폴더의 추가 수준을 살펴 보려면 재귀를 사용하여 하위 폴더의 모든 수준을 통과하는 별도의 하위를 만드는 것이 가장 좋습니다.
그리고 뭐가 궁금한가요? – Bond
"C : \ users"에 파일을 복사하지 않으면 스크립트가 작업을 수행하지 않습니다. 나는 그것을 수행하는 방법에 대한 샘플이 필요하다. wmi를 사용하여 c : \ users *. * (= 모든 사용자 디렉토리)의 하위 폴더 \ DESKTOP에서 검색 할 수 있다면 생각 중이다. – xka
'For Each objDesktopFolder .. Next' 루프 내에서'Folder & "\ sample1.lnk"대신'objDesktopFolder.Path & "\ sample1.lnk"를 사용하십시오 – JosefZ