2013-04-30 98 views
0

我知道JavaScript通常不用于复制文件夹或文件,但是我使用的只是在本地系统上使用JavaScript编写的wsf文件。Javascript:复制一个目录,但不包括内部文件夹/文件

我将给出一个我有问题的简单说明:我有一个文件夹C:/Program Files/Folder,它有三个文件,File1,File2和File3。我只想复制File1和File2,因为File3对于我来说是不需要复制的,并且正被另一个无法杀死的进程使用。 (实际上我有一个包含数百个文件的文件夹,除了一个或两个文件外,我想复制它们。)除了初始化每个文件并对每个文件执行fso.fileCopy()之外,是否还有一些方法可以复制整个文件夹,排除File3?某种排除列表可能?

我有什么:

var fso = new ActiveXObject("Scripting.FileSystemObject"); 

var originalFolder = fso.GetFolder("C:\\Program Files\\Folder"); 
originalFolder.Copy("D:\\Program Files\\Folder"); 

这会崩溃,因为文件3是由一个进程使用。我不想要做

var file1 = fso.getFile("C:\\Program Files\\Folder\\File1"); 
file1.Copy("D:\\Program Files\\Folder\\File1"); 
var file2 = fso.getFile("C:\\Program Files\\Folder\\File2"); 
file2.Copy("D:\\Program Files\\Folder\\File2"); 

为数百个文件。

我对脚本非常陌生,所以我甚至不确定是否可以在JavaScript中做这样的事情。

+0

一些在[这个问题]的答案(HTTP ://stackoverflow.com/questions/10769034/file-management-in-javascript)可能有帮助吗? – Ren 2013-04-30 00:48:14

+0

meh,我的VBA天闪回。如果我是你,我会在VB,VBA,VBScript中搜索这个例子并将它翻译成JS。对FileSystemObject COM对象的调用将非常相似。 – MatthewMartin 2013-04-30 02:25:37

回答

-1
I am very new to scripting, so I'm not even sure if it's possible to do something like this in javascript. 

它不是。如果javascript可以这样做,那么每次您上网时,您的计算机都会有100亿个包含垃圾邮件的文件复制到您的文件系统。

+1

不,可以使用IE中的ActiveX对象访问本地文件系统。 – 2013-04-30 00:29:09

1

Javascript支持try { ... } catch (exception) { ... }块。尽管我会强烈推荐一种更适合于这种本地脚本任务的语言(Perl,Ruby,Python等等),但您可能会将您的file.Copy()调用放在try-catch块中,catch正在使用的文件的例外情况,并且不会导致整个事件崩溃。

有关Javascript试用版块的更多信息here

+0

啊,谢谢!这是一个奇妙的想法,我有点尴尬,我没有想到它自己! :) – 2013-04-30 08:45:44

0

有可能使用Node.js的(也许其他JS框架,但我只使用节点,所以我不知道其他人)

var fs = require('fs'); 
fs.createReadStream('test.log').pipe(fs.createWriteStream('newLog.log')); 
相关问题