2013-04-30 103 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')); 
相關問題