S-curl 및 흐르는 케이프가있는 놈입니다. 필자의 데스크탑에 압축 된 글꼴 파일을 다운로드하는 친구가 있습니다. 그런 다음 파일을 열고 C : \ fonts 폴더에 글꼴을 복사 한 다음 글꼴을 설치합니다. 이 스크립트는 XP에서 사용하도록되어 있습니다. 나는 그녀가 과정을 자동화하는 것을 도울 것이라고 언급했다. 그래서 내 방법론은 그녀가 다운로드 한 zip 파일을 바탕 화면에서 스캔하여 내 바탕 화면에서 내 파일 폴더에있는 ZipFonts라는 폴더로 파일을 옮기는 스크립트를 만드는 것이 었습니다. ZipFonts가 만들어지면 ZipStaging과 CompletedZips라는 두 개의 폴더가 만들어집니다. ZipFonts 폴더로 압축 파일을 옮기는 것이 계획입니다. 그런 다음 ZipFonts를 반복하고 Zip 파일의 내용을 ZipStaging 폴더에 비워두면 Zip 파일이 CompletedZips 폴더로 이동됩니다. 나는 성공적으로 작동하는지 확인하기 위해이 스크립트를 한 장씩하고있다. 성공적으로 폴더를 만들고 ZipFonts 폴더로 압축 파일을 옮길 수있었습니다. 루프를 실행하여 압축 파일을 열면 "Line 44/Char 4/Object Required : 'objShellApp.Namespace (...)'/ Code : 800A01A8"VBScript는 압축 파일이 포함 된 폴더를 반복하고 다른 폴더로 파일 압축을 풉니 다.
철자가 틀립니다. 모든 것이 올바르게 작동하고 Notepad ++를 사용하여 모든 것이 정의되었는지 확인합니다. 루프의 내부와 외부에 Set 객체 참조를 넣어 차이를 만들지 만 동일한 오류가 발생하는지 확인합니다. 내가 뭘 놓치고 있니?
1 Option Explicit
2
3 Public objFSO, objShell
4 Public UserPoint, UserDesktop, UserDocs, ZFFolder, ZSFolder, CZFolder
5 Public SourceFolder, file
6 Public zFolder
7
8
9 Set objFSO = CreateObject("Scripting.FileSystemObject")
10 Set objShell = CreateObject("Wscript.Shell")
11
12 UserPoint = objShell.ExpandEnvironmentStrings("%USERPROFILE%")
13 UserDesktop = (UserPoint & "\Desktop")
14 UserDocs = (UserPoint & "\My Documents")15 ZFFolder = (UserDocs & "\ZipFonts\")
16 ZSFolder = (ZFFolder & "ZipStaging\")
17 CZFolder = (ZFFolder & "CompletedZips\")
18
19 Sub MoveFromDesktop 'Move folders from Desktop To ZipFonts folder
20 Set SourceFolder = objFSO.GetFolder(UserDesktop)
21 FOR EACH file In SourceFolder.Files 'Loop through the user's Desktop folder for files ending with .zip
22 If Right(LCase(file.Name),4) = ".zip" Then
23 'move the file into the %USERPROFILE%\My Documents\ZipFonts folder
24 objFSO.CopyFile file.Path, ZFFolder, TRUE
25 objFSO.DeleteFile file.Path
26 '**figure out how to report that each file is being moved or display some sort of progress bar
27 '**figure out how to report that file relocation has been completed for a few seconds
28 End If
29 NEXT
30 Set SourceFolder = NOTHING
31 Set SourceFolder = objFSO.GetFolder(ZFFolder)
32 If SourceFolder.Files.Count = 0 Then
33 MsgBox("There are no compressed files (files ending with extension .zip) on your desktop.")
34 MsgBox("Please click OK to end.")
35 WScript.Quit
36 End If
37 End Sub
38
39 Sub Extract(file, folder) 'Using Extract for UnZipFiles
40 Dim objShellApp, objSource, zFile, i : i = 1
41 'sa = objShellApp||filesInZip = objSource||zfile = zFile||fso is already declared and defined as objFSO in PUBLIC
42
43 Set objShellApp = CreateObject("Shell.Application")
44 Set objSource = objShellApp.NameSpace(folder&file).Items
45 FOR EACH zFile in objSource 'Eliminating file checking since this is done in my MoveFromDesktop Sub
46 objShellApp.NameSpace(folder).Copyhere(zFile), &H100
47 i = i + 1
48 If i = 99 THEN
49 Call zCleanup(file, i)
50 i = 1
51 End If
52 NEXT
53 If i > 1 THEN
54 Call zCleanup(file, i)
55 End If
56 objFSO.DeleteFile(folder&file)
57 'objTarget.CopyHere objSource, intOptions
58 'intOptions = 256
59
60 Set objSource = Nothing
61 End Sub
62
63 Sub zCleanUp(file, count)
64 Dim i, text 'fso is already declared and defined as objFSO in PUBLIC
65
66 For i = 1 TO count
67 If objFSO.FolderExists(objFSO.GetSpecialFolder(2) & "\Temporary Directory " & i & " for " & file) = TRUE THEN
68 text = fso.DeleteFolder(fso.GetSpecialFolder(2) & "\Temporary Directory " & i & " for " & file, True)
69 Else
70 Exit For
71 End If
72 Next
73 End Sub
74
75 If objFSO.FolderExists(ZFFolder)= FALSE Then
76 Set SourceFolder = objFSO.CreateFolder(ZFFolder)'Create folder %USERPROFILE%\My Documents\ZipFonts
77 Set SourceFolder = Nothing
78 Set SourceFolder = objFSO.CreateFolder(ZSFolder)'Create folder %USERPROFILE%\My Documents\ZipFonts\ZipStaging
79 Set SourceFolder = objFSO.CreateFolder(CZFolder)'Create folder %USERPROFILE%\My Documents\ZipFonts\CompletedZips
80 Set SourceFolder = NOTHING
81 End If
82
83 MoveFromDesktop
84
85 Set SourceFolder = objFSO.GetFolder(ZFFolder)
86 FOR EACH file In SourceFolder.Files 'Loop through all of the files in the %USERPROFILE%\My Documents\ZipFonts folder ending with .zip
87 EXTRACT file, ZSFolder
88 NEXT
89 Msgbox("Ending Script")
90 Wscript.quit
코드가 오류 메시지와 일치하지 않습니다. 43 번째 줄에는 'objShellApp'이 없습니다. 어떤 파일이 실제로 오류를 발생시키고 있는지 확인 했습니까? 또한'CopyHere'는 비동기 적으로 실행됩니다 (즉,'CopyHere'가 끝나기 전에 코드가 이미 계속됩니다). 그리고 변수를 사용하면'intOptions'를 정의하는 것이 무의미합니다. –
어! 당신은 정확하지만 objShell을 objShellApp로 수정 한 후에도 여전히 오류가 발생합니다. – user3371732
오류가 발생하면'zfile'의 값과 유형을 확인 했습니까? 당신이 시도 할 수있는 한가지는 Set objSource = objShellApp.NameSpace (zfile)로 할당을 변경 한 다음 복사 명령에서'Items' 콜렉션을 사용하는 것입니다 :'objTarget.CopyHere objSource.Items, intOptions'. –