Вот и каникулы" закончились - приступаем к работе...
Для 100% наглядности привожу страничку хтм с необходимыми включениями и не претендую на элегантность и компактность кода...
Прошу мне подсказать можно ли без применения цикла вывести в файл перечень полных путей всех файлов в подпапках нужной мне главной папки - name4, т.к. такой код видит файлы только в главной папке минуя все вложенные "подпапки"?
<table width=100% cellpadding=0 cellspacing=0>
<tr>
<td class=head align=right>
<img src="images/pt.gif" width=1 height=3>
</td>
</tr>
</table>
<h2 align="center">МА. Создание и Обновление файла-базы архива.</h2>
<hr noshade size=1>
<table>
<tr>
<td width=30></td>
<td>
<span class=h5>
Разрешите выполнение всех сценариев ActiveX на данной странице!<br><br>
При нажатии кнопки "Обновить" автоматически создается файл-база, содержащий имена всех папок,
подпапок и файлов всего архива,а старый файл-база затирается автоматически.<br>
Пожалуйста, дождитесь завершения обновления файл-базы, после завершения обновления здесь появится соответствующее сообщение.
<br><br>
<form>
<input name=refrech type=submit value="Обновить" onClick="reredir()">
</form>
<br><br>
<script type="text/javascript">
totalproekt = '28000' // из js перенесено в код временно
name3 = "\u005C\u005C192.168.130.100\u005Carhiv\u005Cscan\u005C" // из js перенесено в код временно
name4 = "\u005C\u005C192.168.130.100\u005Carhiv\u005Cscan" // из js перенесено в код временно
// функция
function ShowFileList0(xnamefiles0) {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFolder(xnamefiles0);
var fc = new Enumerator(f.SubFolders);
var s = "";
for (; !fc.atEnd(); fc.moveNext())
s += fc.item() + '\n';
return s;
}
// и еще функция
function ShowFileList1(xnamefiles1) {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFolder(xnamefiles1);
var fc = new Enumerator(f.Files);
var s = "";
for (; !fc.atEnd(); fc.moveNext())
s += fc.item() + '\n';
return s;
}
// а также
// ниже - массив с элементами для перебора подпапок
var filesmassiv = ["a", "ar", "as", "em", "en", "eo", "es", "gp", "gs", "kj", "km", "kmd", "m", "nk", "nv", "nvk", "os", "ov", "pb", "pg", "ps", "pt", "ss", "tk", "ts", "tx", "vk"];
var totalproektfolders = 27 // из js перенесено в код временно
// вроде все из js
var putcatalog = "c:\\pkoarhiv1.temp" // из js перенесено в код временно, абсолютный полный путь к файлу-базе 1
var putfiles = "c:\\pkoarhiv2.temp" // из js перенесено в код временно, абсолютный полный путь к файлу-базе 2
document.write("Количество проектов в архиве: " + totalproekt + '<br>' + 'В каждом проекте папок подпроектов: ' + totalproektfolders + '<br>')
// модуль создания и обновления базы
function reredir() {
if (confirm("Обновить базу, press 'OK'?")) {
var filesall = new ActiveXObject("Scripting.FileSystemObject"); // Создаем объект для занесения всех путей файлов
var foldersall = new ActiveXObject("Scripting.FileSystemObject"); // Создаем объект для занесения всех подпапок
var file0 = foldersall.CreateTextFile(putcatalog, true); // Создаем файл подкаталогов
var file1 = filesall.CreateTextFile(putfiles, true); // Создаем файл полных путей
// далее - код обхода папки *name4* с занесением данных в массив(ы) и/или c записью в файл(ы) на диск с использованием функции ShowFileList из data3.js
// записи папок и файлов
var xnamefiles0=name4
file0.WriteLine(ShowFileList0(xnamefiles0));
file0.Close();
var xnamefiles1=name4
file1.WriteLine(ShowFileList1(xnamefiles1));
file1.Close();
alert("Обновление базы завершено");
}
else alert("Обновление базы не произведено");
}
</script>
<br><br>
Интересная должно быть конструкция, жаль не работает *применяя ее в лоб*:<br>
dir /b /s /a-d *.tif | find /v ".SP." > dir.txt
<br><br>
Хорошо бы еще сюда добавить индикацию для нетерпеливых или нестабильной локалки, :)... но это позже.
<br><br>
</span>
</td>
</tr>
</table>
<br><br>
<hr noshade size=1>
Rumata, стыдно мне признать, но вашу подсказку я так и не смог применить на деле...
Как то преподаватель сказал нам: "У человека есть несколько этапов познания - 1-й=я знаю предмет, 2=О Боже, я ничего уже не понимаю, я ничего получается и не знаю!, и 3- ну вот теперь я все знаю!",
, думаю я в настоящий момент (после прочтения 5% одной полной книги по яваскрипту из 5(!) скаченных книг) начинаю путь из 2 этапа в 3,
.
В коде есть пока еще не использованные переменные и данные типа - filesmassiv, которые будут использованы в ближайшее время...
Любители построили Ковчег, а профессионалы - Титаник.