Javascript:复制目录,不包括内部文件夹/文件

时间:2013-04-30 00:22:40

标签: javascript file-copying wsh

我意识到JavaScript通常不用于复制文件夹或文件,但我使用的是用JavaScript编写的wsf文件,仅用于本地系统。

我将简要解释我遇到的问题:我有一个文件夹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");

这会崩溃,因为进程正在使用File3。我不想做

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中执行此类操作。

3 个答案:

答案 0 :(得分:1)

Javascript支持try { ... } catch (exception) { ... }个阻止。虽然我强烈推荐一种更适合这种本地脚本编写任务的语言(Perl,Ruby,Python等等),但是你可以在try-catch块中包装你的file.Copy()调用,catch正在使用的文件的例外,并且在没有整个事件崩溃的情况下继续。

有关Javascript try-catch块here的更多信息。

答案 1 :(得分:0)

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

var fs = require('fs');
fs.createReadStream('test.log').pipe(fs.createWriteStream('newLog.log'));

答案 2 :(得分:-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亿个包含垃圾邮件的文件复制到您的文件系统。