Вывод сообщений в cdm от рекурсивной функции
Есть скрипт с рекурсивным обходом папок, который как Вы понимаете, может работать достаточно продолжительное время, и с ним все в порядке так вот нужно, чтобы во время своей работы он мог вывести сообщения о своей работе. Идея у меня была такая:
1) Во время работы скрипта открывается окно cmd 2) В открытое окно cmd от скрипта поочередно выводятся адреса тех папок которые обрабатываются в данный момент. (или другая информация о ходе работы) 3) После завершения может появляться сообщение о завершении скрипта. Перерыл не один форум, ничего не нашел. В связи с чем подскажите пожалуйста ответы на вопросы: а) Возможно ли выполнение моей идеи? б) Возможно ли вывести процесс работы такого скрипта другим способом? |
kosmonavtom, причем командная строка в js форуму?:blink:
|
Можно чайнику сказать конкретнее: "Из JS вывести в CMD нельзя!" - как тогда? Никак...
|
kosmonavtom, конечно нельзя так как js не имеет доступ к ресурсам системы он ограничевается браузером.
|
Спасибо! Значит судя по Вашей логике, единственный путь вывести ход выполнения моего скрипта это записать его в код веб-страницы и запускать через браузер? Или можно допустим все-таки создать bat файл и запустить скрипт через бат, а он уже сможет выводить в cmd? (ладно посмотрю это на форуме про bat файлы - просто боюсь, что они мне так-же ответят в духе "...что за js на bat форуме..."
|
cyber,
Вот нашел функцию которая запрашивает данные из cmd, так мне получается наоборот нужно... var wsh = new ActiveXObject("WScript.Shell"); var cmd = wsh.Exec("cmd /c dir C:\ /on"); while (cmd.Status === 0) { WScript.Sleep(100); } var output = cmd.StdOut.ReadAll(); WScript.Echo(output); |
kosmonavtom, работает только в ие, я не уточнил это касаеться всех браузеров кроме ие.
Цитата:
|
Цитата:
|
cyber, не понимаю при чем тут браузеры, мне скрипт нужен чисто для Windows и работает он у меня на любом компьютере с этой операционной системой не зависимо от установленных браузеров в виде отдельного файла. И в итоге вводит команду в cmd и забирает полученные данные оттуда, и мне нужно точно так-же только наоборот... Т.е. запустить скрипт из bat и получить выходные данные от скрипта в cmd. Твоя cyber точка зрения мне ясна - повторять два раза не нужно было. Хочется просто услышать и мнения других Профессоров. Заранее спасибо.
|
kosmonavtom, я с батниками работал но давно но что то еще помню, я просто не могу понять что нужно и причем тут Js.
|
Рекомендую ознакомиться со следующими книгами:
Гюнтер Борн "Руководство разработчика на Microsoft Windows Script Host" Андрей Попов "Windows Script Host для Windows 2000, XP" |
cyber, js рекурсивно работает с папками и заменяет свойства ярлыков в них. И теперь просто осталось вывести ход работы этого js - можно и не в cmd. Понимаю, что данную функцию можно было написать и программно допустим в Си, но мне было интересно именно в js
|
rgl, спасибо за рекомендацию, но обычно если набрать какой либо вопрос в Интернете то гораздо более понятней из готовых кодов как работает язык.
|
kosmonavtom, я в тупую не могу понять как вы выполняете js скрипт через cmd и темболее меняете свойства, может vbscript
|
cyber, ну как же? В js можно создавать текстовые файлы, в js можно запускать bat файлы, так почему в одном js скрипте-файле не создать bat файл, а потом соответственно не запустить его? или тоже самое не сделать только с vbscript??? таким образом и связать и одно и другое и третье...
|
kosmonavtom,
1. Ваш вопрос говорит о том, что вы не знаете простейших вещей при программировании на JS не для браузера 2. Найти что-либо в интернете или задать вопрос и получить ответ практически невозможно. Вам лишь будут пытаться объяснить, что, мол, "JS вне браузера не бывает" 3. Выводить всякую информацию (в т.ч. имя папки) на консоль можно разными способами, простейший WScript.Echo( s ); где s - строковая переменная, содержащая то, что хотите вывести. Запускайте скрипт командой: cscript filename.js или поменяйте настройки, чтобы скрипт по умолчанию запускался в консольном режиме, напр, так: cscript //H:cscript (два слэша - существенно) cyber, Все, что можно сделать на VBScript можно и на JScript, он не только ничем не хуже, а даже лучше :-) |
Цитата:
|
Короче вот рекурсивный скрипт. Чтобы проверить его работу запишите его в любой файл *.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]); } } } |
Цитата:
Цитата:
|
kosmonavtom,
Нехорошо как то. Я ответил на ваш вопрос, ваш скрипт, если запускать его так, как я написал, выводит информацию на консоль, а вы, не дочитавши мой ответ до конца, минусики кликаете, мол, не по теме. |
rgl, нехорошо в книжки вместо ответов отправлять... тогда и кликал!
|
Цитата:
|
Цитата:
|
спасибо, очень прелесный форум. Можете еще накидать, а то мало что-то! :) Главное занятие нашли себе вместо js Хорошее...
|
kosmonavtom,ага, мы сидим тут и "-" кидаем.
|
Цитата:
2. Раньше я тоже отвечал на разные вопросы на форуме, иногда по делу, иногда нет, иногда грамотно, иногда не очень. Но к книжкам никого не отправлял. Причина - есть много разных книг, в которых можно найти информацию. Можно спорить и обсуждать, какая из книг хорошая, какая - не очень, какая - для новичков, какая - для продвинутых. Есть много сайтов с информацией, много форумов, на которых можно задать вопрос и получить ответ. Все это, если говорить про JavaScript внутри браузера. Но если говорить о программировании вне браузера, ситуация меняется - нет хороших и плохих книг - нет никаких! Нельзя найти информацию на сайтах, на форумах. И если вы программируете для windows script host, не могли этого не заметить. Поэтому информация о том, что какая-то книжка по этому вопросу все-таки есть, название и автор - полезная информация, без нее вы можете долго и безуспешно искать хоть что-нибудь. А книжка будет полезной, т.к. если у вас возник тот вопрос, который вы задали, наверняка возникнут еще и другие, ответ на которые будет найти гораздо труднее, чем ответ на вопрос, касающейся программирования для браузера. А книжки (если знать какие) могут здорово помочь. |
kosmonavtom,
javascript - это язык браузера, он не взаимодействует с операционкой То что Вы привели var wsh = new ActiveXObject("WScript.Shell"); var cmd = wsh.Exec("cmd /c dir C:\ /on"); while (cmd.Status === 0) { WScript.Sleep(100); } var output = cmd.StdOut.ReadAll(); WScript.Echo(output);Это - Windows Script http://ru.wikipedia.org/wiki/Windows_Script_Host Это два разных языка, связаны ток словом скрипт, некая связка есть в ИЕ, но мало Вам годиться, Ищите на форумах, к примеру ru-board или http://www.script-coding.com/index.html |
Цитата:
http://msdn.microsoft.com/ru-ru/libr.../br211385.aspx Цитата:
|
Цитата:
на сколько я понял фишка в этих либах <link href="//Microsoft.WinJS.1.0/css/ui-light.css" rel="stylesheet" /> <script src="//Microsoft.WinJS.1.0/js/base.js"></script> <script src="//Microsoft.WinJS.1.0/js/ui.js"></script> |
дорогой "Профессор" cyber, повторяю еще раз: "запускаю файл вида *.js на любом компьютере с Windows XP и с Windows 7 и он спокойно работает", т.к. есть встроенный интерпретатор этого языка, а свой совет я Вам уже дал - отправляйте мне еще МИНУСОВ... т.к. зачем Вам все это знать и общаться, и заниматься js если можно к книжкам отправить собеседника, а потом время тратить на проставление минусов!
Дорогой "кандидат" rgl, задумайтесь над тем, что люди приходят на форум со своим вопросом не потому, что ничего не читали, а потому, что надеются на общение и на понимание проблем и их совместное решение. Это равно как учитель на каждом уроке давал бы конспект из книжки делать вместо объяснения материала. Зачем такой учитель? - уж лучше бы вообще урока не давал. А Ваше предложение по поводу запуска не работает у меня. |
Цитата:
Цитата:
|
dmitriymar, ну так они выполняются не напрямую (как тот же батник ).
|
Ну я лох в этом, вот dmitriymar, сейчас и изобразит нужный код пользователю, собственно если выпады об этом,
если не изобразит, он в нашей же стае, и трёп для оффтопика |
Цитата:
Проще стрелять сигарету в среде курильщиков, нежели у некурящих, И проще найти ответ в Вашем тематическом ресурсе! |
http://ru.wikipedia.org/wiki/Windows_Script_Host , ТС накуренный и перепутал JScript && JavaScript.
Цитата:
Цитата:
|
Цитата:
cyber, всё проще http://kulibaba.net/programming/javascript/windows8 |
dmitriymar, это я знаю, но Тс говорил по Xp и 7, http://habrahabr.ru/company/microsoft/blog/170615/ .
Deff, Тс первым начал борзеть (как в школе, "он первый начал" :)). |
Цитата:
|
Deff, тут да, лично я за офицальные подтверждения, либо ссылки на такие ресурсы как вики или хабр (там есть ссылка на источник).
|
Цитата:
2 за свои слова я отвечаю, за то как их слышат и интерпретируют -пусть отвечают те, кто слышит и интерпретируют как хотят, а не так сказано. 3 Почему я должен реализовывать твою придурь? ты это придумал а реальность вот, так что не перекручивай : Цитата:
после твоих попыток манилипулировать ситуацией -ты как минимум лгун-в принципе ты сам всё знаешь о себе бред потому, что Цитата:
гавно -как же тебе не нравятся когда тебе говорят правду -ты нихрена не знаешь и не будешь знать адьёс мучача |
Часовой пояс GMT +3, время: 08:35. |