![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
dron4ik |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 318 Пол: Мужской Репутация: ![]() ![]() ![]() |
Привет всем.
Задача такого типа. Создать ярлык в указанной папке(папку мы указываем при запуске скрипта в качестве первого параметра) а второй ярлык создаем в др папке путем копирования первого ярлыка(папку куда копируем первый ярлык мы сами указываем при запуске скрипта в качестве второго параметра). Проблемка в том что я сделал эту задачу но так. запускаем скрипт и он сразу создает первый ярлык в папке(путь к папке менять можно только в самом коде, а нам нужно чтоб путь к папке где должен создаваться ярлык мы сами вводили в качестве первого параметра)и сразу этот ярлык копируется в др папку(путь к папке куда копируется первый ярлык также меняется только в самом коде, а нам нужно чтоб путь к папке где должен создаваться второй ярлык мы сами вводили) Помогите пожалуйста разобраться как это осуществить((( Код 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 |
![]()
Сообщение
#2
|
Гость ![]() |
Доступ к аргументам, передаваемым скрипту - через WScript.Arguments.Item(номер_аргумента_начиная_с_нуля)
|
dron4ik |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 318 Пол: Мужской Репутация: ![]() ![]() ![]() |
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 |
![]()
Сообщение
#4
|
Гость ![]() |
Ну и что, работает?
|
dron4ik |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 318 Пол: Мужской Репутация: ![]() ![]() ![]() |
не работает(
Добавлено через 2 мин. незнаю как использовать Wscript.Arguments.Item(0) (( подскажите пожалуйста( Добавлено через 9 мин. Wscript.Arguments.Item(0)- если 0 ничего не делается если 1 то создается первый ярлык если 2 то первый ярлык копируется -- правильно понимаю? |
volvo |
![]()
Сообщение
#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" |
dron4ik |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 318 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо ) Но параметры жить отдельно друг без руга не могут?
Добавлено через 2 мин. т.е. если введем один параметр то индекс выходит за пределы допустимого диапозона. Добавлено через 4 мин. упс вру вру.(( живут. но когда запускаешь один параметр то он выполняется но при этом выходит ошибка что индекс выходит за пределы допустимого диапозона. |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Ну естественно, ты задаешь один, а получить хочешь два? Проверяй в самом начале, что WScript.Arguments.Count() > 1, а не больше 0, то есть, передано как минимум 2 параметра... Или при одном параметре второй задавай по умолчанию:
Код var Dest; Можно и с первым параметром так поступать...if(WScript.Arguments.Count() == 1) { Dest = "какой-то путь по умолчанию"; } else { Dest = WScript.Arguments(1); // то, что передали } |
dron4ik |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 318 Пол: Мужской Репутация: ![]() ![]() ![]() |
а если к примеру сделать так чтобы при вводе первого параметра а при этом не вводим второй у нас не было какого то пути по умолчанию?
Добавлено через 4 мин. var Dest; if(WScript.Arguments.Count() == 1) { } else { Dest = WScript.Arguments(1); // то, что передали } То так не получиться дест полюбому зарезервирован. |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
И куда ты в таком случае будешь ярлык копировать? Или ты хочешь, чтобы если второго параметра нет - то вообще не копировать никуда, только в одном месте пусть создается? Тогда оберни код копирования условием
if(WScript.Arguments.Count() > 1) { |
dron4ik |
![]()
Сообщение
#11
|
![]() Бывалый ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 318 Пол: Мужской Репутация: ![]() ![]() ![]() |
т.е. место того чтобы он в путь по умолчанию кидал, выхадила надпись пользователю мол, не ввел 2 параметр.
Добавлено через 5 мин. Понятно) Добавлено через 53 сек. Спасибо, volvo[color=#FF0000]) |
![]() ![]() |
![]() |
Текстовая версия | 22.07.2025 2:30 |