07.03.2013, 20:28
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
Рекомендую ознакомиться со следующими книгами:
Гюнтер Борн "Руководство разработчика на Microsoft Windows Script Host"
Андрей Попов "Windows Script Host для Windows 2000, XP"
|
|
07.03.2013, 23:14
|
Интересующийся
|
|
Регистрация: 07.03.2013
Сообщений: 27
|
|
cyber, js рекурсивно работает с папками и заменяет свойства ярлыков в них. И теперь просто осталось вывести ход работы этого js - можно и не в cmd. Понимаю, что данную функцию можно было написать и программно допустим в Си, но мне было интересно именно в js
|
|
07.03.2013, 23:24
|
Интересующийся
|
|
Регистрация: 07.03.2013
Сообщений: 27
|
|
rgl, спасибо за рекомендацию, но обычно если набрать какой либо вопрос в Интернете то гораздо более понятней из готовых кодов как работает язык.
|
|
08.03.2013, 00:22
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
kosmonavtom, я в тупую не могу понять как вы выполняете js скрипт через cmd и темболее меняете свойства, может vbscript
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
08.03.2013, 10:18
|
Интересующийся
|
|
Регистрация: 07.03.2013
Сообщений: 27
|
|
cyber, ну как же? В js можно создавать текстовые файлы, в js можно запускать bat файлы, так почему в одном js скрипте-файле не создать bat файл, а потом соответственно не запустить его? или тоже самое не сделать только с vbscript??? таким образом и связать и одно и другое и третье...
|
|
08.03.2013, 11:19
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
kosmonavtom,
1. Ваш вопрос говорит о том, что вы не знаете простейших вещей при программировании на JS не для браузера
2. Найти что-либо в интернете или задать вопрос и получить ответ практически невозможно. Вам лишь будут пытаться объяснить, что, мол, "JS вне браузера не бывает"
3. Выводить всякую информацию (в т.ч. имя папки) на консоль можно разными способами, простейший
WScript.Echo( s );
где s - строковая переменная, содержащая то, что хотите вывести. Запускайте скрипт командой:
cscript filename.js
или поменяйте настройки, чтобы скрипт по умолчанию запускался в консольном режиме, напр, так:
cscript //H:cscript
(два слэша - существенно)
cyber,
Все, что можно сделать на VBScript можно и на JScript, он не только ничем не хуже, а даже лучше :-)
Последний раз редактировалось rgl, 08.03.2013 в 11:22.
|
|
08.03.2013, 11:50
|
Интересующийся
|
|
Регистрация: 07.03.2013
Сообщений: 27
|
|
Цитата:
|
1. Ваш вопрос говорит о том, что вы не знаете простейших вещей при программировании на JS не для браузера...
|
rgl, похоже именно как раз Вы не вникли абсолютно в проблему! Мне не нужен однократный вывод одного сообщения, которое Вы описали и которое я конечно знаю, а мне нужно в процессе рекурсии выводить процесс её работы. Простым Echo не обойтись.
|
|
08.03.2013, 12:04
|
Интересующийся
|
|
Регистрация: 07.03.2013
Сообщений: 27
|
|
Короче вот рекурсивный скрипт. Чтобы проверить его работу запишите его в любой файл *.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]);
}
}
}
|
|
08.03.2013, 15:25
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
Сообщение от kosmonavtom
|
и вы замучаетесь щелкать появляющиеся Echo
|
Если делать как я сказал, Echo будет выводить информацию не в модальное окно а в консоль, и ничего щелкать не нужно:
Сообщение от rgl
|
Запускайте скрипт командой:
cscript filename.js
или поменяйте настройки, чтобы скрипт по умолчанию запускался в консольном режиме, напр, так:
cscript //H:cscript
|
|
|
08.03.2013, 15:35
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
kosmonavtom,
Нехорошо как то. Я ответил на ваш вопрос, ваш скрипт, если запускать его так, как я написал, выводит информацию на консоль, а вы, не дочитавши мой ответ до конца, минусики кликаете, мол, не по теме.
Последний раз редактировалось rgl, 08.03.2013 в 15:44.
|
|
|
|