Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создать ярлык(s) к файлам @ScriptDir & "\Folder\* \*.exe"

Ответить
Настройки темы
[решено] Создать ярлык(s) к файлам @ScriptDir & "\Folder\* \*.exe"

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Собсно вопрос.
Создать (где нибудь) ярлык(и) к файлам @ScriptDir & "\Folder \ подфолдерс \ все файлы *.exe"
Уровень вложенности директорий можно сказать что определён, но количество файлов и имён надо определить авто.

-------
Полезное сообщение


Отправлено: 16:09, 03-02-2010

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#include <File.au3>

_FileCreateShortcut(@ScriptDir & "\Folder\подфолдерс", "*.exe")

Func _FileCreateShortcut($sPath, $sFilter, $sWorkDir="", $sArgs="", $sDesc="", $sIcon="", $sHotKey="", $iIconID=0, $iState=0)
    $aFiles = _FileListToArray($sPath, $sFilter, 1)
    If @error Then Return SetError(1, 0, 0)

    For $i = 1 To $aFiles[0]
        FileCreateShortcut( _
            $sPath & "\" & $aFiles[$i], _
            $sPath & "\" & StringRegExpReplace($aFiles[$i], "\.[^\.]*$", "") & ".lnk", _
            $sWorkDir, $sArgs, $sDesc, $sIcon, $sHotKey, $iIconID, $iState)
    Next
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 03-02-2010 в 21:37.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:41, 03-02-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


А у меня таким образом создается ярлык на папку, а через него получаю доступ ко всем подпапкам и файлам внутри.
Код: Выделить весь код
FileCreateShortcut("MyFolder", "MyShortcut.lnk")
Creat0R,
У меня, почему-то, при использовании Вашей функции создаются ярлыки с именем filelnk. Поставил точку перед "lnk"
Код: Выделить весь код
...StringRegExpReplace($aFiles[$i], "\.[^\.]*$", "") & ".lnk"...
и стало все в порядке. Почему? Точка ведь в исключениях или нет?

Последний раз редактировалось madmasles, 03-02-2010 в 17:29.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:52, 03-02-2010 | #3


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Есть проблема! Я думал сразу понятно будет....
Программы в папках лежат

Ну да я тут сам сморозил
Цитата:
подфолдерс \ все файлы *.exe"
можно подумать что все exe в одной папке лежат.

Но надо так:
Общий_рут\Папка_проги1\???.EXE
Общий_рут\Папка_проги2\???.EXE
Общий_рут\Папка_проги3\???.EXE

Так обычно и встречается часто. И понятно что поиск тут сложней, поэтому я и не берусь "думать"
Ярлыки лучше в общую папку слить, например на рабочий стол - %UserProfile%\Desktop
хотя это не принципиально, лишь бы они в одной паки были.

Заранее благодарю!!!

Цитата madmasles:
А у меня таким образом создается ярлык на папку, а через него получаю доступ ко всем подпапкам и файлам внутри. »
Поэтому и надо что у меня в подпапках дальше добираться

-------
Полезное сообщение


Отправлено: 18:18, 03-02-2010 | #4


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


У меня так получилось:
Код: Выделить весь код
$avArray = _FileSearch(@ScriptDir & "\Folder", "*.exe")
DirCreate(@DesktopDir & "\MyShortcut")
For $i = 1 To $avArray[0]
    $name = StringTrimRight(StringTrimLeft($avArray[$i], StringInStr($avArray[$i], "\", "", -1)), 4)
    FileCreateShortcut($avArray[$i], @DesktopDir & "\MyShortcut\" & $name & ".lnk")
Next

Func _FileSearch($sPath, $sFileMask)
    Local $iPID, $sStdOutRead, $aRet

    $iPID = Run(@ComSpec & ' /C Dir "' & $sPath & '\' & $sFileMask & '" /S /B /A RASH', @SystemDir, @SW_HIDE, 6)

    While 1
        $sStdOutRead &= StdoutRead($iPID)
        If @error <> 0 Then ExitLoop
    WEnd

    $aRet = StringSplit(StringStripCR(StringStripWS($sStdOutRead, 3)), @LF)
    Return SetError(@error, 0, $aRet)
EndFunc   ;==>_FileSearch
PS
Функция Creat0R _FileSearch($sPath, $sFileMask)

PPS
Если в пути встречаются русские буквы, то не работает.

Последний раз редактировалось madmasles, 03-02-2010 в 19:32.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:58, 03-02-2010 | #5


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Вот так нормально отрабатывает с русскими буквами в путях:

Код: Выделить весь код
#include <Encoding.au3>

$avArray = _FileSearch(@ScriptDir & "\Folder", "*.exe")
DirCreate(@DesktopDir & "\MyShortcut")
For $i = 1 To $avArray[0]
    $name = StringTrimRight(StringTrimLeft($avArray[$i], StringInStr($avArray[$i], "\", "", -1)), 4)
    FileCreateShortcut(_Encoding_CyrillicTo1251($avArray[$i]), @DesktopDir & "\MyShortcut\" & $name & ".lnk")
Next

Func _FileSearch($sPath, $sFileMask)
    Local $iPID, $sStdOutRead, $aRet

    $iPID = Run(@ComSpec & ' /C Dir "' & $sPath & '\' & $sFileMask & '" /S /B /A RASH', @SystemDir, @SW_HIDE, 6)

    While 1
        $sStdOutRead &= StdoutRead($iPID)
        If @error <> 0 Then ExitLoop
    WEnd

    $aRet = StringSplit(StringStripCR(StringStripWS($sStdOutRead, 3)), @LF)
    Return SetError(@error, 0, $aRet)
EndFunc   ;==>_FileSearch
UDF от Creat0R Encoding_UDF.zip
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:45, 03-02-2010 | #6


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата madmasles:
Поставил точку перед "lnk" »
Да, это я упустил.

Цитата madmasles:
Вот так нормально отрабатывает с русскими буквами в путях »
А если просто добавить chcp 1251 & перед Dir?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:40, 03-02-2010 | #7


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Цитата madmasles:
Если в пути встречаются русские буквы, то не работает. »
Русские буквы в файлах втопку! Я даже с пробелами борюсь у себя. А скрипт лично мне самому надо.
Надеюсь уже не глючит, тему закрываю. Спасибо_!

-------
Полезное сообщение


Отправлено: 15:49, 04-02-2010 | #8


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


semiono,
Вы лучше проверьте, а то у меня работает, а у Вас не будет.
Во втором варианте ( с #include <Encoding.au3>) у меня нет проблем ни с русскими буквами, ни с пробелами в путях.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 04-02-2010 | #9


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


madmasles, я запустил скрипт (забыл путь указать реальный) и у меня один shortcut на столе создался с именем .lnk усказывает на MyComputer Но потом всё наладил! Это просто инфа к дебуг информации )
Второй скрипт я не проверял, у меня <Encoding.au3> нету, а на форум я что-то не зарегистрировался,
неужели semiono кто-то там юзает или это я был не помню Потом проверю, а инклюд лучше бы в личку сюда было. Но спасибо полюбому! П.С. Не знаю толку от меня на автоит.ру никакого, даже стыдно региться... Лишь для своей пользы чтоль

-------
Полезное сообщение


Отправлено: 16:16, 04-02-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создать ярлык(s) к файлам @ScriptDir & "\Folder\* \*.exe"

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - "Отправить на Рабочий стол (Создать ярлык)" - Пропала строка Utuwa Microsoft Windows 2000/XP 2 12-10-2014 16:19
"2 Reboot (explorer.exe)" самодельная "прога" перезагружающая оболочку "explorer.exe" rizz Автоматическая установка приложений 14 30-11-2009 14:32
Очистка "Program Files" & "Documents & Settings" перед установкой. sergvg Автоматическая установка Windows 2000/XP/2003 27 26-07-2009 10:13
[решено] "File Folder"s открываются в окне "Search" ??? Dredd Microsoft Windows 2000/XP 8 15-04-2005 18:38
"Ссылка" и "Ярлык" - в чём различие? :) german r Хочу все знать 6 24-04-2003 21:19




 
Переход