首页 新闻 会员 周边 捐助

VBS做的一个脚本,插入U盘后自动复制文件

0
悬赏园豆:50 [待解决问题] 浏览: 3282次
复制代码
set fso=createobject("scripting.filesystemobject") 
set ws=createobject("wscript.shell") 
dim USB, file, folder, files 
USB=inputbox("请输入U盘的盘符"&Chr(10)&"如插入的U盘为H盘,则输入H","","H") 
folder=inputbox("请输入复制到的文件夹"&Chr(10)&"如想复制到D盘,请输入D:\","","D:\xueyue\") 
files=inputbox("请输入要复制的文件类型"&Chr(10)&"如要复制EXCEL文件,输入xls;默认为全部类型","","默认是全部类型") 
USB=USB & ":\" 
folder=folder & "\" 
if files="默认是全部类型"then 
file=USB & "*" 
else 
file=USB & "*." & files 
end if 
if FSO.FolderExists(folder) then 
else 
FSO.CreateFolder(folder) 
end if 
on error resume next 
do 
wscript.sleep 1000 
if fso.driveexists(USB) then 
fso.copyfile file,folder 
fso.copyfolder file,folder 
wscript.sleep 20000 
end if 
loop
复制代码

这个代码,如果指定某一类型文件,如txt,就只能复制U盘主目录下的文本文件,子文件夹里面的并不会被复制,请问怎么修改,让他可以复制U盘上所有该类型文件和文件目录?

掠風的主页 掠風 | 初学一级 | 园豆:152
提问于:2015-11-26 14:34
< > 人人可用的开源BI工具
分享
所有回答(2)
0

遍历文件夹,一层一层的复制文件就是了,*.*表示全部类型,再试试看

CodeHsu | 园豆:5668 (大侠五级) | 2015-11-26 15:40

能写出代码吗?

支持(0) 反对(0) 掠風 | 园豆:152 (初学一级) | 2015-11-26 15:41

@掠風: 我不写这个VBS脚本,只是给你提供思路的,不好意思,我可以给你一段C#代码

 1 #region 复制目录 static bool Copy(string origin, string target)
 2 /// <summary>
 3 /// 复制目录:复制源目录中的所有文件和所有子目录到目标目录中,不会创建源目录同名目录,
 4 /// 如有需要自行添加源目录名至目标目录后面
 5 /// </summary>
 6 /// <param name="origin">源目录</param>
 7 /// <param name="target">目标目录</param>
 8 /// <returns>布尔值</returns>
 9 public static bool Copy(string origin, string target)
10 {
11     try
12     {
13         if (!origin.EndsWith("\\"))
14         {
15             origin += "\\";
16         }
17         if (!target.EndsWith("\\"))
18         {
19             target += "\\";
20         }
21 
22         DirectoryInfo info = new DirectoryInfo(origin);
23         if (!Exist(target))
24         {
25             //Create(target, info.GetAccessControl());//创建目录,访问权限
26             Create(target);//创建目录
27         }
28 
29         FileInfo[] fileList = info.GetFiles();
30         DirectoryInfo[] dirList = info.GetDirectories();
31         foreach (FileInfo fi in fileList)
32         {
33             File.Copy(fi.FullName, target + fi.Name, true);
34         }
35         foreach (DirectoryInfo di in dirList)
36         {
37             Copy(di.FullName, target + "\\" + di.Name);
38         }
39         //设置目录属性和访问权限
40         DirectoryInfo tmp = new DirectoryInfo(target);
41         tmp.Attributes = info.Attributes;
42         tmp.SetAccessControl(info.GetAccessControl());
43         return true;
44     }
45     catch (Exception ex)
46     {
47         throw ex;
48     }
49 }
50 #endregion

就是个思路,你再琢磨一下。

支持(0) 反对(0) CodeHsu | 园豆:5668 (大侠五级) | 2015-11-26 16:19
0

一、FSO的CopyFolder方法,仅能在目标目录的最后一层使用*,参见http://www.jb51.net/article/4490.htm

二、你可以试试递归的思路,自己写个函数,参考这里http://blog.csdn.net/xiciliu/article/details/8845362

邀月 | 园豆:25475 (高人七级) | 2015-11-27 09:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册
Top