当前位置 博文首页 > vbs复制文件的脚本

    vbs复制文件的脚本

    作者:admin 时间:2021-05-12 18:22

    复制代码 代码如下:

    parentfolder = "c:\"
    sourcefile = "c:\windows\log.log"
    targetfolder = parentfolder & date & "\"
    set objshell = createobject("shell.application")
    set objfolder = objshell.namespace(parentfolder)
    objfolder.newfolder date
    set so=createobject("scripting.filesystemobject")
    so.getfile(sourcefile).copy(targetfolder)


    经过最近的需要写出了如下代码,可以判断文件是否更新并且文件大小更大

    复制代码 代码如下:

    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    set fn2=fso.GetFile("c:\index2.htm")
    flsize2=fn2.size
    fldate2=fn2.datelastmodified
    set fn=fso.GetFile("c:\index.htm")
    flsize1=fn.size
    fldate1=fn.datelastmodified
    If fso.FileExists("c:\index2.htm") and flsize2>50000 and fldate2>fldate1 Then
    fso.getfile("c:\index2.htm").copy("c:\index.htm")
    if err.number=0 then WriteHistory "成功"&now(),"log.txt"
    end if

    Sub WriteHistory(hisChars, path)
      Const ForReading = 1, ForAppending = 8
      Dim fso, f
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set f = fso.OpenTextFile(path, ForAppending, True)
      f.WriteLine hisChars
      f.Close
    End Sub



    下面来个功能更多的代码:

    复制代码 代码如下:

    WScript.Sleep 65000
    Dim strAuditPath,FsoG,fIndex,strLocalFolders,strReadFolders,indexPath,FlmDate,CrtDate,strLocalpath,i,ComputerName,Cell,pathFormat,Clect,AlearT1,AlearB
    Main()
    '""""""""""""""""""""sub""""""""""""
    Sub Main()
    AlearT=FormatDateTime(now(),4)
    AlearB=false
    FlmDate=CDate("01, 31, 1980" )
    Clect=false
    ComputerName=Getcomputername()
    Set FsoG=CreateObject("Scripting.FileSystemObject")
    GetSetting
    'pathFormat=Left(strLocalpath,Len(strLocalpath)-8) & "Labels"
    indexPath=strAuditPath & "Index.txt"
    set f=FSOG.OPENTEXTFILE(GetAbPath(strAuditPath) & "logo history.txt",8,true)
    f.writeline FormatDateTime(Now(),4) & "\" & cell & "\" & computername
    f.close
    '***************计算本地FORMAT****************************************************************************
    ' Getformat
    '**************************************************************************************************************
    '在这里一个循环比较日志更新日期
    do while(1)
       If (fsoG.FileExists(indexPath)) Then
        '指出最近更新时间
       set fIndex=fsoG.GetFile(indexPath)
       CrtDate=fIndex.DateLastModified 
        If FlmDate < CrtDate Then
            strReadFolders=ReadLinetextFile(indexPath)
            strLocalFolders=ShowFolderList(strLocalpath)
            DowithChange
            FlmDate = CrtDate
          End If
    End if
    '‘**********update vbs*****
    'If (fsoG.FileExists(getAbpath(strAuditPath) & "pe.vbs")) Then
    'fsog.CopyFile getAbpath(strAuditPath) & "pe.vbs",GetAbpath(GetCPath) & "pe.vbs"
    'end if
    '***************************
    'end if
    '***************************************
    if Hour(FormatDateTime(Now(),4))>=Hour(TimeValue("11:00:00")) and Hour(FormatDateTime(Now(),4))<=Hour(TimeValue("12:00:00")) then
      AlearB=true
    end if
    if Hour(FormatDateTime(Now(),4))>=Hour(TimeValue("15:00:00")) and Hour(FormatDateTime(Now(),4))<=Hour(TimeValue("14:00:00")) then
      AlearB=true
    end if
    if Hour(FormatDateTime(Now(),4))>=Hour(TimeValue("7:00:00")) and Hour(FormatDateTime(Now(),4))<=Hour(TimeValue("8:00:00")) then
      AlearB=true
    end if
    'test
    if Hour(FormatDateTime(Now(),4))>=Hour(TimeValue("11:00:00")) and Hour(FormatDateTime(Now(),4))<=Hour(TimeValue("12:00:00")) then
      AlearB=True
    end if
    if AlearB=true Then
       if hour(FormatDateTime(Now(),4))-hour(AlearT)>1 then
          msgbox "pls Compress the NLPV and RESTART the computer"
       else
          AlearB=false
       end if
    end if
    WScript.Sleep 10000
    Loop
    End Sub
    Sub Getformat()
    strFormats=ShowFilesList(pathFormat)
      Const ForReading = 1, ForWriting = 2
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set f = fso.OpenTextFile(GetAbPath(strAuditPath) & CELL & " " & ComputerName  & ".txt", ForWriting, True)
    for i=0 to UBound(strFormats)
    f.WriteLine  left(strFormats(i),len(strFormats(i))-4)
    next
    f.WriteLine cell
    f.WriteLine ComputerName
    '
      f.Close
    clect =true
    End sub
    Function ShowFilesList(folderspec)
       Dim fso, f, f1, s(), sf,i
       i=0
       redim s(i)
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set f = fso.GetFolder(folderspec)
        Set fc = f.Files
        For Each f1 in fc
          redim Preserve s(i)
          s(i)= f1.name
          i=i+1
       Next
    ShowFilesList=s
    End Function
    Function ShowFolderList(folderspec)
       Dim fso, f, f1, s(), sf,i
       i=0
       redim s(i)
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set f = fso.GetFolder(folderspec)
       Set sf = f.SubFolders
       For Each f1 in sf
          redim Preserve s(i)
          s(i)= f1.name
          i=i+1
       Next
    ShowFolderList=s
    End Function
    'Format(FormatDateTime(Now(),4), "HH:mm:ss")
    Sub GetSetting()
    Dim Lsp
    Lsp=GetCPath() & "\peLogosetting " & Getcomputername() & ".txt"
    If (Not fsoG.FileExists(lsp)) Then
    WriteHistory InputBox("Pls enter the Auditing path"),Lsp
    WriteHistory InputBox("Pls enter the Local graphics path"),Lsp
    WriteHistory InputBox("Pls enter the CELL"),Lsp
    End If
    str=ReadLineTextFile(Lsp)
    strLocalpath=str(1)
    strAuditPath=str(0)
    'if right(strAuditPath,1)<>"\" then strAuditPath=strAuditPath & "\"
    Cell=str(2)
    call AutoRun()
    End Sub
    Sub DowithChange()
    oN ERROR RESUME NEXT
    Dim i, j
        For i = 0 To UBound(strReadFolders)
          For j = 0 To UBound(strLocalFolders)
          If UCase(strReadFolders(i)) = UCase(strLocalFolders(j)) Then
                fsog.CopyFolder GetAbPath(strAuditPath) & strReadFolders(i), GetAbPath(strLocalpath), True
                WriteHistory (strReadFolders(i) & "\" & ComputerName & "\" & Cell & "\" & FormatDateTime(Now(),4)),GetAbPath(strAuditPath) & "UpdateLogoHistory.txt"
         End If
          Next
        Next
    End Sub
    Sub WriteHistory(hisChars, path)
      Const ForReading = 1, ForAppending = 8
      Dim fso, f
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set f = fso.OpenTextFile(path, ForAppending, True)
      f.WriteLine hisChars
      f.Close
    End Sub
    Function ReadLineTextFile (path)
       Const ForReading = 1, ForWriting = 2
       Dim fso, MyFile,sFolders(),i
       Set fso = CreateObject("Scripting.FileSystemObject")
       i=0
       redim sfolders(i)
       Set MyFile = fso.OpenTextFile(path, ForReading)
       Do While MyFile.AtEndOfLine <> True
        redim Preserve sFolders(i)
        sFolders(i) = MYfile.ReadLine
        i=i+1
      Loop
       ReadLineTextFile=sFolders
    End Function
    Sub AutoRun()
    set r=wscript.createobject("wscript.shell")
    yuan = WScript.ScriptFullName
    r.RegWrite "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\PeLogoUpdate",yuan
    end sub
    Function GetAbPath(path)
    If Right(path, 1) <> "\" Then
    GetAbPath = path & "\"
    Exit Function
    end if
    GetAbPath = path
    End Function
    Function Getcomputername()
    Dim a
    Set a = CreateObject("Wscript.Network")
    Getcomputername= a.ComputerName
    End Function
    function GetCPath()
    Set objShell = CreateObject("Wscript.Shell")
    strPath = Wscript.ScriptFullName
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile(strPath)
    Getcpath = objFSO.GetParentFolderName(objFile)
    end Function


    vbs复制文件夹

    需要实现一个复制文件夹的功能,网上找到相关代码,并做了改进,vbs脚本如下

    复制代码 代码如下:

    Dim fso, CopyCount
    Set fso = CreateObject("Scripting.FileSystemObject")

    CopyCount = CopyCount + XCopy(fso, ".\1", ".\2", True)
    MsgBox "拷贝了" & CopyCount & "个文件!"

    '********************************************************************
    '* Function :     XCopy
    '*
    '* Purpose:  复制文件和目录树。
    '*
    '* Input:    fso            FileSystemObject 对象实例
    '*           source         指定要复制的文件。
    '*           destination    指定新文件的位置和/或名称。
    '*           overwrite      是否覆盖已存在文件。 Ture 覆盖, False 跳过
    '*
    '* Output:   返回复制的文件个数
    '*
    '********************************************************************
    Function XCopy(fso, source, destination, overwrite)
        Dim s, d, f, l, CopyCount
        Set s = fso.GetFolder(source)

        If Not fso.FolderExists(destination) Then
            fso.CreateFolder destination
        End If
        Set d = fso.GetFolder(destination)

        CopyCount = 0
        For Each f In s.Files
            l = d.Path & "\" & f.Name
            If Not fso.FileExists(l) Or overwrite Then
                If fso.FileExists(l) Then
                    fso.DeleteFile l, True
                End If
                f.Copy l, True
                CopyCount = CopyCount + 1
            End If
        Next

        For Each f In s.SubFolders
            CopyCount = CopyCount + XCopy(fso, f.Path, d.Path & "\" & f.Name, overwrite)
        Next

        XCopy = CopyCount
    End Function

    在脚本文件路径建立一个文件夹,取名1,放入两个文件,运行程序结果如下

    js