|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск разноименных ярлыков по свойству(ам) |
|
CMD/BAT - Поиск разноименных ярлыков по свойству(ам)
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Здравствуйте, коллеги.
Не сталкивался ли кто-нибудь с описанной в заголовке задачей? Поясню: пользователи создавали себе ярлыки на сетевые папки, расположенные на разных серверах. Имена ярлыков произвольные. Хотелось бы объединить все сетевые папки на одном файл-сервере. Перенести данные и ACL, конечно, не проблема, но что делать с ярлыками, которые пользователи себе насоздавали (тысячи их)? Вручную менять ярлыки очень долго и муторно. Хотелось бы написать некий скрипт, который бы анализировал поле "Объект" всех ярлыков на рабочем столе и при нахождении соответствия удалял ярлык, а вместо него копировал бы другой с определенным стандартизированным именем. На примере это выглядит следующим образом: есть два пользователя - Вася и Коля, которые используют сетевую папку \\SRV1\Folder\. Вася создал ярлык к папке \\SRV1\Folder\ и назвал его "Общая", Коля же, создав ярлык туда же назвал его "Сервер". Неожиданно имя сервера изменилось на SRV2 и ярлыки перестали работать. Было принято решение для всех Вась и Коль создать групповую политику, которая находила бы их ярлыки к папке \\SRV1\Folder\, и либо меняла путь на \\SRV2\Folder\, либо удаляла старые ярлыки, указывающие на \\SRV1\Folder\, а вместо них копировала на рабочий стол новые, указывающие на \\SRV2\Folder\. С уважением, |
|
Отправлено: 16:05, 20-01-2014 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Шальной.:
|
|
Отправлено: 18:09, 20-01-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1758
|
Шальной., Попробуйте, для домашнего ноутбука с локальными путями работает
pushd "$home\desktop" $shell = new-object -comobject wscript.shell gci *.lnk | % { if ( $shell.createshortcut( $_ ).targetpath -eq '\\SRV1\Folder' ) { $lnk = $shell.createshortcut( $_ ) $lnk.targetpath = '\\SRV2\Folder' $lnk.save() } } popd [void][Runtime.InteropServices.Marshal]::ReleaseComObject( $shell ) |
Отправлено: 18:40, 20-01-2014 | #3 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Спасибо вам огромное, Iska и Foreigner!
И на VBS и на PowerShell сработало так, как и было необходимо! Вы серьезно облегчили мне жизнь! Не хочу показаться наглым, но т.к. я пока только вхожу в изучение скриптовых языков, не могли бы вы заодно показать, как заодно переименовать эти ярлыки, например в "Общий сетевой ресурс"? Кстати, вопрос к Iska - почему копирование готового ярлыка это плохая идея? И если Вас не затруднит, не могли бы Вы прокомментировать строку Цитата Iska:
|
|
Последний раз редактировалось Шальной., 20-01-2014 в 19:09. Причина: уточнение вопроса Отправлено: 19:08, 20-01-2014 | #4 |
Ветеран Сообщения: 1758
|
Цитата Шальной.:
|
||
Отправлено: 21:32, 20-01-2014 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Шальной.:
Цитата Шальной.:
Цитата Шальной.:
|
|||
Отправлено: 22:23, 20-01-2014 | #6 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Отлично!
Просто супер! Еще раз большое спасибо! Единственный вопрос - если ярлыков ссылающихся на одно и то же расположение больше одного, то при запуске вылетает ошибка, говорящая о том, что ярлык с таким именем уже существует. Возможно ли в таком случае добавлять цифирку в скобочках, как в проводнике - "Общий сетевой ресурс (2).lnk"? И если это не вызовет Ваш гнев - возможно ли использование знаков подстановки с этих скриптах? Поясню, есть сетевой ресурс \\SRV1\Folder\, а в нем папки Dir1, Dir2 и Dir3. И пользователь сделал ярлык не на сетевой ресурс \\SRV1\Folder\, а на папку внутри этого ресурса \\SRV1\Folder\Dir1. В этом случае, скрипт этот ярлык проигнорирует. Возможно ли использовать знаки подстановки (например знак "*"), для того чтобы создать ярлык на ресурс \\SRV2\Folder\Dir1. Т.е. некая часть пути была бы статично прописана, а другая часть пути была бы динамической. С большим уважением ко всем, |
Отправлено: 12:49, 21-01-2014 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Видеокарта по benchmark'ам не дает ожидаемых результатов. (Asus GeForce GTX 560 Ti) | Plasmaf8d | Видеокарты | 11 | 25-01-2013 07:45 | |
CMD/BAT - cортировка файлов по заданному свойству | oleika | Скриптовые языки администрирования Windows | 0 | 16-05-2012 23:17 | |
Поиск слова в txt затем поиск по маске "(383)" и вывод инфы | rustoss | AutoIt | 10 | 29-09-2011 15:27 | |
3COM/Huawei - Вопрос по ACL-ам на коммутаторе 3com Baseline Plus Switch 2928 | sasha_karikov | Сетевое оборудование | 0 | 02-04-2010 21:38 | |
Разбить DVD по title'ам | Romero_Ekb | Видео и аудио: обработка и кодирование | 1 | 21-11-2006 20:44 |
|