Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вывод сообщений в cdm от рекурсивной функции (https://javascript.ru/forum/events/36200-vyvod-soobshhenijj-v-cdm-ot-rekursivnojj-funkcii.html)

rgl 07.03.2013 20:28

Рекомендую ознакомиться со следующими книгами:
Гюнтер Борн "Руководство разработчика на Microsoft Windows Script Host"
Андрей Попов "Windows Script Host для Windows 2000, XP"

kosmonavtom 07.03.2013 23:14

cyber, js рекурсивно работает с папками и заменяет свойства ярлыков в них. И теперь просто осталось вывести ход работы этого js - можно и не в cmd. Понимаю, что данную функцию можно было написать и программно допустим в Си, но мне было интересно именно в js

kosmonavtom 07.03.2013 23:24

rgl, спасибо за рекомендацию, но обычно если набрать какой либо вопрос в Интернете то гораздо более понятней из готовых кодов как работает язык.

cyber 08.03.2013 00:22

kosmonavtom, я в тупую не могу понять как вы выполняете js скрипт через cmd и темболее меняете свойства, может vbscript

kosmonavtom 08.03.2013 10:18

cyber, ну как же? В js можно создавать текстовые файлы, в js можно запускать bat файлы, так почему в одном js скрипте-файле не создать bat файл, а потом соответственно не запустить его? или тоже самое не сделать только с vbscript??? таким образом и связать и одно и другое и третье...

rgl 08.03.2013 11:19

kosmonavtom,
1. Ваш вопрос говорит о том, что вы не знаете простейших вещей при программировании на JS не для браузера
2. Найти что-либо в интернете или задать вопрос и получить ответ практически невозможно. Вам лишь будут пытаться объяснить, что, мол, "JS вне браузера не бывает"
3. Выводить всякую информацию (в т.ч. имя папки) на консоль можно разными способами, простейший
WScript.Echo( s );
где s - строковая переменная, содержащая то, что хотите вывести. Запускайте скрипт командой:
cscript filename.js
или поменяйте настройки, чтобы скрипт по умолчанию запускался в консольном режиме, напр, так:
cscript //H:cscript
(два слэша - существенно)

cyber,
Все, что можно сделать на VBScript можно и на JScript, он не только ничем не хуже, а даже лучше :-)

kosmonavtom 08.03.2013 11:50

Цитата:

1. Ваш вопрос говорит о том, что вы не знаете простейших вещей при программировании на JS не для браузера...
rgl, похоже именно как раз Вы не вникли абсолютно в проблему! Мне не нужен однократный вывод одного сообщения, которое Вы описали и которое я конечно знаю, а мне нужно в процессе рекурсии выводить процесс её работы. Простым Echo не обойтись.

kosmonavtom 08.03.2013 12:04

Короче вот рекурсивный скрипт. Чтобы проверить его работу запишите его в любой файл *.js, поместите в папку где не очень много подпапок, Далее запустите его и вы замучаетесь щелкать появляющиеся Echo. Так вот мне нужно чтобы это было не ЕХО, а что-то другое, что позволяло бы продолжать работу скрипта без щелчков мыши. Можете посоветовать?

// 1 Взято но не рабочее с сайта: [url]http://forum.oszone.net/nextnewesttothread-199998.html[/url]
// 2объект файловой системы
var fso = new ActiveXObject("Scripting.FileSystemObject"); 
// 4 путь к каталогу, откуда запускается скрипт
var path = WScript.ScriptFullName.substr(0, (WScript.ScriptFullName.length - WScript.ScriptName.length)),  
	p = fso.GetFolder(path);

var vsePapki = [];  //Массив записей путей ко всем подпапкам.
var nomerProverki=0; //Количество провереных и обработанных папок.
var nomerZapisi=1;  // Количество записанных папок в массив.

//12 Вызываем рекурсивную функцию
sFolders(path);
//14 Рекурсивная функция перебора всех папок и подпапок
function sFolders(folder)//полный путь
{	
	// 17 доступ к объекту-папке
	var root = fso.GetFolder(folder);
	// 19 Коллекция подпапок
	var sfCount = root.SubFolders.Count;
	// 21 последовательность подпапок
	var seq = new Enumerator(root.SubFolders);
	// WScript.Echo("\nКоличество подпапок в корневой папке (" + root + ") = " + sfCount);
        // 24 если в текущей папке есть подпапки, то вызываем функцию для каждой подпапки рекурсивно.
	while (sfCount>0)
	{
		for(; !seq.atEnd(); seq.moveNext())
		{
			// WScript.Echo("Путь к подпапке = " + seq.item().path);
			vsePapki[nomerZapisi] = seq.item().path;
			nomerZapisi=nomerZapisi+1; // Количество записей в массиве адресов
		}
		nomerProverki=nomerProverki+1;
		
		WScript.Echo("Номер проверки = " + nomerProverki +  "          Номер записи = " + [nomerZapisi-1]);
		
		if (nomerProverki>=nomerZapisi)
		{
			sfCount = 0;
		}
		else
		{
			WScript.Echo("ПАПКА НА ПРОВЕРКУ = " + vsePapki[nomerProverki]);
			sfCount = sfCount - 1;
			sFolders(vsePapki[nomerProverki]);
		
		}
	
	}
 
}

rgl 08.03.2013 15:25

Цитата:

Сообщение от kosmonavtom
и вы замучаетесь щелкать появляющиеся Echo

Если делать как я сказал, Echo будет выводить информацию не в модальное окно а в консоль, и ничего щелкать не нужно:
Цитата:

Сообщение от rgl
Запускайте скрипт командой:
cscript filename.js
или поменяйте настройки, чтобы скрипт по умолчанию запускался в консольном режиме, напр, так:
cscript //H:cscript


rgl 08.03.2013 15:35

kosmonavtom,
Нехорошо как то. Я ответил на ваш вопрос, ваш скрипт, если запускать его так, как я написал, выводит информацию на консоль, а вы, не дочитавши мой ответ до конца, минусики кликаете, мол, не по теме.


Часовой пояс GMT +3, время: 08:06.