В этой теме Вы можете высказывать идеи о написании того или иного скрипта. Если Вы столкнулись с монотонной задачей, которую можно автоматизировать и не знаете как это сделать, Вы можете описать свою проблему здесь и возможно найдутся те, кто подскажет как её решить. Большая просьба чётко описывать задачу, от этого будет зависеть качество её решений
Готовые решения будут открепляться в отдельные темы
[info] Тема по большому счёту закрыта, т.к. я больше не пишу отдельных скриптов... Большинство скриптов для Total Commander вошли в функционал в утилиты TCIMG
Выложите скрипт для Win7, может его можно подправить...
В принципе нашел аналогичную проблему и соответственно решение. Проблема оказалась банальная: отсутствовала часть сценария в *.iss.
Код
Set objShell = CreateObject("Shell.Application") set filesystem = CreateObject("scripting.Filesystemobject") Set objFolder = objShell.Namespace(filesystem.GetParentFolderName(Wscript.Arguments(0))) Set objFolderItem = objFolder.ParseName(filesystem.GetFileName(WScript.Arguments(0))) Set colVerbs = objFolderItem.Verbs For Each objVerb in colVerbs If Replace(objVerb.name, "&", "") = "Pin to Taskbar" Then objVerb.DoIt If Replace(objVerb.name, "&", "") = "Unpin from Taskbar" Then objVerb.DoIt If Replace(objVerb.name, "&", "") = "Закрепить программу в панели задач" Then objVerb.DoIt If Replace(objVerb.name, "&", "") = "Изъять программу из панели задач" Then objVerb.DoIt If Replace(objVerb.name, "&", "") = "Закрепить на панели задач" Then objVerb.DoIt If Replace(objVerb.name, "&", "") = "Открепить от панели задач" Then objVerb.DoIt Next
Код
const LOAD_LIBRARY_AS_DATAFILE = $2;
#ifdef UNICODE #define A "W" #else #define A "A" #endif
function LoadLibraryEx(lpFileName: String; hFile: THandle; dwFlags: DWORD): THandle; external 'LoadLibraryEx{#A}@kernel32.dll stdcall'; function LoadString(hInstance: THandle; uID: SmallInt; var lpBuffer: Char; nBufferMax: Integer): Integer; external 'LoadString{#A}@user32.dll stdcall'; function SHGetNewLinkInfo(pszLinkTo, pszDir: String; var pszName: Char; var pfMustCopy: Longint; uFlags: UINT): BOOL; external 'SHGetNewLinkInfo{#A}@shell32.dll stdcall';
function PinToTaskbar(Filename: String; IsPin: Boolean): Boolean; //Filename: full path to executable file //IsPin: False - unpin to TaskBar, True - pin from TaskBar var hInst: THandle; buf: array [0..255] of Char; i, Res: Integer; strLnk, strVerb: String; objShell, colVerbs: Variant; begin Result := False; if (GetWindowsVersion shr 24 < 6) or ((GetWindowsVersion shr 24 = 6) and ((GetWindowsVersion shr 16) and $FF < 1)) then Exit; if not FileExists(Filename) then Exit; if IsPin then if SHGetNewLinkInfo(Filename, ExpandConstant('{tmp}'), buf[0], Res, 0) then begin while buf[Length(strLnk)] <> #0 do strLnk := strLnk + buf[Length(strLnk)]; if FileExists(ExpandConstant('{userappdata}\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\') + ExtractFileName(strLnk)) then Exit; end; if IsPin then Res := 5386 else Res := 5387; hInst := LoadLibraryEx(ExpandConstant('{sys}\shell32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE); if hInst <> 0 then try for i := 0 to LoadString(hInst, Res, buf[0], 255)-1 do strVerb := strVerb + Buf[i]; try objShell := CreateOleObject('Shell.Application'); except ShowExceptionMessage; Exit; end; colVerbs := objShell.Namespace(ExtractFileDir(Filename)).ParseName(ExtractFileName(Filename)).Verbs; for i := colVerbs.Count downto 1 do if colVerbs.Item[i].Name = strVerb then begin colVerbs.Item[i].DoIt; Result := True; Break; end; finally FreeDLL(hInst); end; end;
В общем, ярлык закрепляется сейчас без проблем. Теперь возник несколько другой вопрос. При выполнении скрипта vbs и закреплении ярлыка появляется окно "Allready Pinned!". Как убрать это окно?
добрый день! уже недели 2 мучаюсь с проблемой. Windows server 2012, поднял сервер удаленных рабочих столов, публикация установленных приложений возможна, а вот если приложение находится в сети то выдает что unc-путь не поддерживается т.е. из сети опубликовывать приложения нельзя, пробовал разные способы, последний был написание *.exe фала на delphy, но и это не помогло, спросил у своего начальника он сказал что делай через vbs, может вы что нибудь подскажите? заранее спасибо
В свете появления утилиты MenuIMG стала проблема открытия панелей bar, если в них есть кнопки - всплывающие меню. На mnu подменю поддерживаются нормально. Идея - создать скрипт для конвертации файлов bar в mnu
Доброго времени суток!Нужен скрипт для мониторинга папки и ее подпапок чтения этой информации и записи в эксцелевскую таблицу структуру иерархии!Нужно чтоб строилась схема всего что в них есть по иерархии!Буду очень признателен за помощь!За ранее спасибо!
Доброго времени суток. Есть такая потребность - создавать одним нажатием ярлыки с относительным путем в определенной папке. Перерыл весь инет и нашел только одно единственное решение вот здесь: http://forum.wincmd.ru/viewtop....start=0 Опробовал, все работает замечательно, но как обычно есть один нюанс! Скрипт заточен под винду и ярлык с относительным путем естественно открывается в эксплорере (как и ставилась задача автором топика) даже если на нем кликнуть в тотале! А возможно ли, хотя бы теоретически, модифицировать относительный ярлык так, чтобы он при клике в тотале открывался в тотале же, как это происходит с обычным, не относительным ярлыком. Ну и, разумеется, если можно модифицировать ярлык, то соответственно переделать (или написать с нуля) скрипт для данной процедуры создания ярлыка.
Сообщение отредактировал thesittingbull - Среда, 15.05.2013, 03:37
Вопрос понятен, отвечаю подробно. При моем ритме работы приходится иметь очень много документов в электронном виде. Эти документы я складываю в папки названные в формате ГГГГ.ММ.ДД + тематическое название вопроса. Ежегодно продумываю структуру тематических папок в которые попадают эти как бы первичные папки. И на каждый год завожу папку с названием типа ГГГГ + место работы. При этом на протяжении вот уже многих лет сталкиваюсь с необходимостью положить одну первичную папку в несколько тематических, например, папка связанная с решением вопроса о выделении денег на ремонт крыши цеха должна попасть в две тематические - в папку "финансы" и в папку с названием подразделения в котором находится этот цех. Разумеется первым порывом было использовать сиволические ссылки (класть их в тематические папки, а первичные положить в отдельную папку), это решение меня почти полностью устраивает, но при смене жесткого диска все наработанные связи (ссылки) рухнут. Кроме того, текущая база у меня находится в Дропбоксе который постоянно синхронизируется между рабочим и домашним компом (и бэкапится на переносной винчестер) и в данном случае ссылки созданные на одном вызовут физическое копирование файлов на другом, а это крайне нежелательно (возрастет нагрузка на канал, возникнет неразбериха при редактировании файла который оказался дублированным через символическую ссылку на другом компе через дропбокс). Еще думал о монтировании виртуального накопителя, а уже на нем создать символические ссылки, решение тоже не очень, так как чтобы сохранилась структура необходимо копировать весь файл виртуального диска. Также рассматривал возможности виртуальных панелей Тотала. Но остается тот же вопрос с перемещением данных на другой носитель (абсолютный путь ссылки будет нарушен). Вот и получается, что единственный оставшийся путь - относительные линки, но работать с ними я естественно хочу в тотале, а не в проводнике! Если вы подскажете какой либо другой выход, буду очень благодарен. Из специфического софта решение моей проблемы предлагает (при тщательном анализе имеющегося в Инете) программа DocOrganizer 3.3, но она по сути обеспечивает замену проводника и исключает использование Тотала. Уфф надеюсь понятно объяснил.
Да, вообще-то вы правы, в принципе можно, но концептуально как-то неправильно. При каждом втыкании переносного винчестера в чужой комп редактировать и прогонять скрипт? Поймите меня правильно, мне не лень, но по-моему компы для того и были созданы, чтоб один физический (логический) объект можно было положить в несколько мест. Это в реальной жизни разные носки нельзя одновременно рассортировать в разные ящики и по цвету и по размеру, и по степени чистоты, и по материалу. Я вообще считаю что такая возможность в скором времени будет реализована на уровне ОС (и библиотеки Windows Vista/7 тому подтверждение, только нужно создать возможность одну папку как-то обозначить как корневую, а какие-то папки как минимальные единицы (первичные папки), создать внутри корневой папки общий накопитель и много виртуальных каталогов, установив связь с первичными папками. И при перемещении корневой папки вся структура будет сохраняться... Надеюсь что я прав. К сожалению я не совсем айтишник, хотя несколько лет возглавлял информационно-аналитический отдел (больше приходилось заниматься аналитикой, а из айти - примитивными БД на Акцессе), а в настоящее время я руководитель, но опыт околоайтишной работы крайне помогает!
Добавлено (15.05.2013, 11:37) --------------------------------------------- Допускаю, что еще одной возможностью решения моей проблемы может быть создание относительных ссылок в виртуальной панели. Скажем так: виртуальная панель в тотале ищет папки на которые есть ссылки только в каталоге в котором установлен тотал (то есть по принципу %COMMANDER_PATH%), только не знаю, возможно ли такое в принципе...
Сообщение отредактировал thesittingbull - Среда, 15.05.2013, 11:00
При каждом втыкании переносного винчестера в чужой комп редактировать и прогонять скрипт?
Приснилась одна идея: 1. Ассоциировать lnk с утилитой TCIMG 2. В утилите создать параметр обработки lnk 3. Если ссылка относительная, то перенаправление
В теории вроде должно получится, на практике... на днях посмотрю.
----------------- Добавлено: ------------
К сожалению lnk не удалось ассоциировать в Total Commander, видимо Гислер поставил запрет... Можно сделать свой формат ярлыков, к примеру *.lnkk - это будут те же ярлыки, но с возможностью обработки в утилите. Если Вас такой вариант устроит, то я займусь функционалом...
----------------- Добавлено: ------------
lnk всё таки ассоциируются, но не напрямую (как обычно двойным кликом), а через контекстное меню - по нажатию правой кнопкой мыши - Открыть (внутр.) Каждый раз вызывать контекстное меню ИМХО не удобно. Можно сделать 2 варианта lnk и lnkk, посмотреть что будет удобнее.
сиволические ссылки ... при смене жесткого диска все наработанные связи (ссылки) рухнут.
Не рухнут - потому что существуют утилиты FastCopy, XXXCOPY, Link Shell Extension, которые умеют копировать структуру таких ссылок. Но вот насчёт Dropbox - не знаю... надо пробовать. DreamLair.net