IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> работа со скриптами JS, Работа с параметрами
сообщение
Сообщение #1


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Привет всем.
Задача такого типа.
Создать ярлык в указанной папке(папку мы указываем при запуске скрипта в качестве первого параметра) а второй ярлык создаем в др папке путем копирования первого ярлыка(папку куда копируем первый ярлык мы сами указываем при запуске скрипта в качестве второго параметра). Проблемка в том что я сделал эту задачу но так.
запускаем скрипт и он сразу создает первый ярлык в папке(путь к папке менять можно только в самом коде, а нам нужно чтоб путь к папке где должен создаваться ярлык мы сами вводили в качестве первого параметра)и сразу этот ярлык копируется в др папку(путь к папке куда копируется первый ярлык также меняется только в самом коде, а нам нужно чтоб путь к папке где должен создаваться второй ярлык мы сами вводили) Помогите пожалуйста разобраться как это осуществить(((





Код
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");
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Доступ к аргументам, передаваемым скрипту - через WScript.Arguments.Item(номер_аргумента_начиная_с_нуля)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


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();
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ну и что, работает?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


не работает(

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

Добавлено через 9 мин.
Wscript.Arguments.Item(0)- если 0 ничего не делается если 1 то создается первый ярлык если 2 то первый ярлык копируется -- правильно понимаю?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Код
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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Спасибо ) Но параметры жить отдельно друг без руга не могут?

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

Добавлено через 4 мин.
упс вру вру.(( живут. но когда запускаешь один параметр то он выполняется но при этом выходит ошибка что индекс выходит за пределы допустимого диапозона.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






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


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


а если к примеру сделать так чтобы при вводе первого параметра а при этом не вводим второй у нас не было какого то пути по умолчанию?

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

То так не получиться дест полюбому зарезервирован.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






И куда ты в таком случае будешь ярлык копировать? Или ты хочешь, чтобы если второго параметра нет - то вообще не копировать никуда, только в одном месте пусть создается? Тогда оберни код копирования условием
if(WScript.Arguments.Count() > 1) {
// тут копируешь ярлык
}
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


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

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

Добавлено через 53 сек.
Спасибо, volvo[color=#FF0000])
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.05.2024 19:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name