【问题标题】:Javascript: copy a directory, excluding internal folders/filesJavascript:复制目录,不包括内部文件夹/文件
【发布时间】:2013-04-23 19:25:32
【问题描述】:

我意识到 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 中执行类似的操作。

【问题讨论】:

  • this question 上的一些答案可能会有所帮助?
  • 嗯,我的 VBA 日子的倒叙。如果我是你,我会在 VB、VBA、VBScript 中搜索示例并将其翻译为 JS。对 FileSystemObject COM 对象的调用将大致相同。

标签: javascript file-copying wsh


【解决方案1】:

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

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

【讨论】:

  • 啊,谢谢!这是一个绝妙的主意,我有点尴尬,我自己没有想到它! :)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:
    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 亿个包含垃圾邮件的文件复制到您的文件系统中。

    【讨论】:

    • 不,本地文件系统可以使用 IE 中的 ActiveX 对象访问。
    猜你喜欢
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2010-11-02
    相关资源
    最近更新 更多