0

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

我将简单解释一下我遇到的问题:我有一个文件夹C:/Program Files/Folder,其中包含三个文件,File1、File2 和 File3。我只想复制 File1 和 File2,因为 File3 对我来说是不需要复制的,并且正在被另一个无法杀死的进程使用。(实际上我有一个包含数百个文件的文件夹,我想复制所有文件,除了一个或两个。)除了初始化每个文件并fso.fileCopy()处理每个单独的文件之外,还有什么方法可以复制整个文件夹,不包括文件 3?也许某种排除列表?

我有的:

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 中做这样的事情。

4

3 回答 3

1

Javascript 支持try { ... } catch (exception) { ... }块。虽然我强烈推荐一种更适合这种本地脚本任务的语言(Perl、Ruby、Python 等等),但您可以将 file.Copy() 调用包装在 try-catch 块中,catch正在使用的文件的例外情况,并继续进行而不会使整个事情崩溃。

有关 Javascript try-catch 块的更多信息,请点击此处

于 2013-04-30T00:34:42.380 回答
0

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

var fs = require('fs');
fs.createReadStream('test.log').pipe(fs.createWriteStream('newLog.log'));
于 2013-04-30T00:55:41.487 回答
-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 亿个包含垃圾邮件的文件复制到您的文件系统中。

于 2013-04-30T00:25:58.840 回答