2013-04-30 1 views
0

Я понимаю, что JavaScript обычно не используется для копирования папок или файлов, но я использую файл wsf, написанный на JavaScript, для использования только в моей локальной системе.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"); 

Это будет катастрофа, поскольку 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 можно сделать что-то подобное.

+0

Некоторые из ответов на этот вопрос [] (HTTP : //stackoverflow.com/questions/10769034/file-management-in-javascript) может быть полезно? – Ren

+0

meh, воспоминание о моих днях VBA. Если бы я был вами, я бы искал пример в VB, VBA, VBScript и перевел его на JS. Вызов объекта COM FileSystemObject будет таким же. – MatthewMartin

ответ

-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 может это сделать, ваш компьютер будет иметь 10 миллиардов файлов, содержащих спам, скопированный в вашу файловую систему каждый раз, когда вы занимаетесь серфингом в Интернете.

+1

Нет, локальная файловая система доступна с использованием объектов ActiveX в IE. –

1

Javascript поддерживает try { ... } catch (exception) { ... } блоки. Хотя я бы очень рекомендовал язык, более подходящий для этой задачи локального сценария (Perl, Ruby, Python и многие другие), вы можете обернуть свой вызов file.Copy() в блок try-catch, catch исключение для используемых файлов, и продолжайте без сбоев всего.

Дополнительная информация о блоках try-catch Javascript here.

+0

Ах, спасибо! Это замечательная идея, и я немного смущен, что сам не думал об этом! :) –

0

Это возможно с помощью Node.js (и, возможно, другие JS рамочные, но я использую только узел, так что я не знаю о других)

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

 Смежные вопросы

  • Нет связанных вопросов^_^