首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在复制损坏的文件时避免“权限被拒绝”?

如何在复制损坏的文件时避免“权限被拒绝”?
EN

Stack Overflow用户
提问于 2015-05-14 06:00:01
回答 1查看 1.6K关注 0票数 0

我写了一个VBScript把文件从E盘复制到C盘。E驱动器中有许多系统文件和损坏的文件,因此当复制这些文件时,脚本将停止。有什么方法可以在脚本运行时传递或跳过这些文件吗?

代码是将所有文件夹从E驱动器复制到C驱动器

代码语言:javascript
复制
Const hd = "E:\"
Const cd = "C:\"

Dim path



Sub GenPath()
path = cd 

End Sub

Sub GenFolder()
Set objFso = CreateObject("Scripting.FileSystemObject")
objFso.CreateFolder path
 Set objFso = Nothing

End Sub

Set fso=WScript.CreateObject("scripting.filesystemobject")
Set fs=fso.GetFolder("E:\")
Set f=fs.SubFolders
For Each uu In f

            Set Ws = WScript.CreateObject("Scripting.filesystemobject")
            Ws.CopyFolder  uu,path & "\"
EN

回答 1

Stack Overflow用户

发布于 2015-05-14 06:06:37

代码语言:javascript
复制
For Each uu In f

       Set Ws = WScript.CreateObject("Scripting.filesystemobject")
       Ws.CopyFolder hd & uu,path1
   End If 


Next    

变为集合Ws = WScript.CreateObject("Scripting.filesystemobject")

代码语言:javascript
复制
On Error Resume Next
For Each uu In f

       Ws.CopyFolder uu.path, path1
       If err.number <> 0 then err.clear

Next    

另外,由于未知的原因,你有了一个End If

这是基本操作,但您可以在此基础上重新创建文件夹结构(这会将所有文件转储到一个文件夹中)。

代码语言:javascript
复制
On error resume next
Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.GetFolder("C:\Users\David Candy\Desktop")
fso.createfolder("C:\Users\David Candy\test123")
Folder2 = "C:\Users\David Candy\test123"
For Each thing in f.subfolders
        msgbox thing.path
        If err.number <> 0 then 
            msgbox err.description
            err.clear
        End If
    For Each thingy in thing.files
        msgbox thingy.path
        thingy.copy(Folder2 & "\" & thingy.name)
        If err.number <> 0 then 
            msgbox err.description
            err.clear
        End If
    Next
Next

只使用了额外的一行和另一行的编辑来重新创建文件结构。

代码语言:javascript
复制
On error resume next
Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.GetFolder("C:\Users\David Candy\Desktop")
fso.createfolder("C:\Users\David Candy\test123")
Folder2 = "C:\Users\David Candy\test123"
Set log = fso.CreateTextFile("c:\logfile.txt") 
For Each thing in f.subfolders
    fso.createfolder(folder2 & "\" & thing.name)
    If err.number <> 0 then 
        log.writeline thing.path & err.description
        err.clear
    End If
    For Each thingy in thing.files
        thingy.copy(Folder2 & "\" & thing.name & "\" & thingy.name)
        If err.number <> 0 then 
            log.writeline thingy.path & err.description 
            err.clear
        End If
    Next
Next
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30225922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档