Помощь - Поиск - Пользователи - Календарь
Полная версия: работа со скриптами JS
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
dron4ik
Привет всем.
Задача такого типа.
Создать ярлык в указанной папке(папку мы указываем при запуске скрипта в качестве первого параметра) а второй ярлык создаем в др папке путем копирования первого ярлыка(папку куда копируем первый ярлык мы сами указываем при запуске скрипта в качестве второго параметра). Проблемка в том что я сделал эту задачу но так.
запускаем скрипт и он сразу создает первый ярлык в папке(путь к папке менять можно только в самом коде, а нам нужно чтоб путь к папке где должен создаваться ярлык мы сами вводили в качестве первого параметра)и сразу этот ярлык копируется в др папку(путь к папке куда копируется первый ярлык также меняется только в самом коде, а нам нужно чтоб путь к папке где должен создаваться второй ярлык мы сами вводили) Помогите пожалуйста разобраться как это осуществить(((





Код
var WSHShell = WScript.CreateObject("WScript.Shell");
// Узнаем путь к Рабочему столу
var Path = WSHShell.SpecialFolders("C:\\Клипы");
// Создаем ярлык
var MyShortcut = WSHShell.CreateShortcut( "C:\\Клипы\\Блокнот.lnk");
// Задаем свойства для ярлыка:
// Запускаемый файл
MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe");
// Директория запускаемого файла
MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%");
// Тип окна запускаемого файла
MyShortcut.WindowStyle = 4;
// Иконка, используемая для ярлыка
MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe, 0");
// Сохраняем изменения свойств ярлыка
MyShortcut.Save();
// Докладываем, что все готово
WScript.Echo("Ярлык для Блокнота создан ");

var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFile("C:\\Клипы\\*Блокнот.lnk*", "C:\\Клипы\\Клипы1");
volvo
Доступ к аргументам, передаваемым скрипту - через WScript.Arguments.Item(номер_аргумента_начиная_с_нуля)
dron4ik
var Path = WSHShell.SpecialFolders("C:\\Клипы");
// Получается сдесь менять?
var MyShortcut = WSHShell.CreateShortcut( "C:\\Клипы\\Блокнот.lnk");и сдесь тоже?


Добавлено через 4 мин.
вот что добавил
var fso;
if(WScript.Arguments.Count()>0)
var fso = new ActiveXObject("Scripting.FileSystemObject");
var newpath = fso.CopyFile(WScript.Arguments(0)+"\\Блокнот.lnk",true);
CreateInkFile(fso.GetFolder(WScript.Arguments(0)));
newpath.Close();
volvo
Ну и что, работает?
dron4ik
не работает(

Добавлено через 2 мин.
незнаю как использовать Wscript.Arguments.Item(0) (( подскажите пожалуйста(

Добавлено через 9 мин.
Wscript.Arguments.Item(0)- если 0 ничего не делается если 1 то создается первый ярлык если 2 то первый ярлык копируется -- правильно понимаю?
volvo
Код
var WSHShell = WScript.CreateObject("WScript.Shell");
// Создаем ярлык
var Path = WScript.Arguments(0);
var MyShortcut = WSHShell.CreateShortcut(Path + "\\mynotepad.lnk");
// Задаем свойства для ярлыка:
// Запускаемый файл
MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe");
// Директория запускаемого файла
MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%");
// Тип окна запускаемого файла
MyShortcut.WindowStyle = 4;
// Иконка, используемая для ярлыка
MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe, 0");
// Сохраняем изменения свойств ярлыка
MyShortcut.Save();
// Докладываем, что все готово
WScript.Echo("Shortcut created ");

var fso = new ActiveXObject("Scripting.FileSystemObject");
var Dest = WScript.Arguments(1);
fso.CopyFile(Path + "\\*mynotepad.lnk*", Dest);
Запускал так:
F:\Programs>cscript test.js "C:\Documents and Settings\Vlady\Desktop" "F:\T"
Отработало. Создало ярлык на Десктопе и переместило в папку F:\T
dron4ik
Спасибо ) Но параметры жить отдельно друг без руга не могут?

Добавлено через 2 мин.
т.е. если введем один параметр то индекс выходит за пределы допустимого диапозона.

Добавлено через 4 мин.
упс вру вру.(( живут. но когда запускаешь один параметр то он выполняется но при этом выходит ошибка что индекс выходит за пределы допустимого диапозона.
volvo
Ну естественно, ты задаешь один, а получить хочешь два? Проверяй в самом начале, что WScript.Arguments.Count() > 1, а не больше 0, то есть, передано как минимум 2 параметра... Или при одном параметре второй задавай по умолчанию:
Код
var Dest;
if(WScript.Arguments.Count() == 1) {
  Dest = "какой-то путь по умолчанию";
}
else {
  Dest = WScript.Arguments(1); // то, что передали
}
Можно и с первым параметром так поступать...
dron4ik
а если к примеру сделать так чтобы при вводе первого параметра а при этом не вводим второй у нас не было какого то пути по умолчанию?

Добавлено через 4 мин.
var Dest;
if(WScript.Arguments.Count() == 1) {
Dest = "какой-то путь по умолчанию";
}
else {
Dest = WScript.Arguments(1); // то, что передали
}

То так не получиться дест полюбому зарезервирован.
volvo
И куда ты в таком случае будешь ярлык копировать? Или ты хочешь, чтобы если второго параметра нет - то вообще не копировать никуда, только в одном месте пусть создается? Тогда оберни код копирования условием
if(WScript.Arguments.Count() > 1) {
// тут копируешь ярлык
}
dron4ik
т.е. место того чтобы он в путь по умолчанию кидал, выхадила надпись пользователю мол, не ввел 2 параметр.

Добавлено через 5 мин.
Понятно)

Добавлено через 53 сек.
Спасибо, volvo[color=#FF0000])
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.