无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2701|回复: 2
打印 上一主题 下一主题

[原创] 生成批处理copy的脚本的VBA程序

[复制链接]
跳转到指定楼层
1#
发表于 2016-4-24 15:20:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己制作PE时,通常会缺少文件,这就少不了查找和复制,有的时候文件分布在多个目录下,手动查找和复制很麻烦,我就写了一个自动生成批处理copy的VBA程序。
程序代码如下:

Sub findAndCopy()
    Dim WSH As Object, wExec As Object, result
    Dim val, n
    Dim i As Integer
    Dim sFile As Object, Fso As Object
    Dim cmdStr As String
   
   
    Set WSH = CreateObject("WScript.Shell")
    ChDir ThisWorkbook.Path
    Set wExec = WSH.exec("cmd.exe /c dir /b /s C:\Windows\devmgmt.msc")  '将此处的C:\Windows\devmgmt.msc替换成自己需要查找的文件路径
    result = wExec.StdOut.ReadAll
    ActiveSheet.Cells(1, 1) = result
    val = Split(result, Chr(13))
    ActiveSheet.Cells(1, 2) = val(1)
   
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set sFile = Fso.CreateTextFile("TestFile.cmd", True)        '此处添加生成的批处理脚本的路径和名称
   
    i = 0
    For n = LBound(val) To UBound(val)
        If n < UBound(val) Then
            ActiveSheet.Cells(1, i + 2) = val(i)
            cmdStr = "echo F | xcopy " & val(i) & " " & Replace(val(i), "C:", "D:\dddddd") & " /Y /H" ’将此处的D:\dddddd替换成目标的文件路径
            sFile.WriteLine (Replace(cmdStr, Chr(10), ""))
            i = i + 1
        End If
    Next
    sFile.WriteLine ("pause")
End Sub

代码的原理如下:
1. 利用dos命令dir /b /s filename 生成文件路径;
2. 利用字符串处理,创建批处理语句,并且写到文件当中;

不足:
1.当需要查找的文件很多时,需要手动添加路径;
2.代码没有函数话,使用稍显不便
2#
发表于 2016-4-24 18:53:43 | 只看该作者
。。。
感觉有点绕弯路了啊。直接批处理查找复制比这个简单多了啊(for 命令)。
这个还需要安装Excel。

点评

确实有点绕弯路了啊,嘿嘿  详情 回复 发表于 2016-4-25 09:45
回复

使用道具 举报

3#
 楼主| 发表于 2016-4-25 09:45:27 | 只看该作者
slore 发表于 2016-4-24 18:53
。。。
感觉有点绕弯路了啊。直接批处理查找复制比这个简单多了啊(for 命令)。
这个还需要安装Excel。

确实有点绕弯路了啊,嘿嘿
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-28 18:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表