Какова переменная среды для пути к рабочему столу?

Как создать ярлык на рабочем столе с помощью cmd – hellsman blog

Часто бывает, что многие программы у пользователей в организациях запускаются не с логического диска, а с сетевых папок, так н.р. Дубль-Гис или др.
При переустановках системы часто возникает потребность снова создавать эти ярлыки, или если пользователь случайно их удалит, а потом эти программы ему снова понядобятся.
Как можно оптимизировать процесс?
Как и в прошлом сообщении можно добавить определенный скрипт, выполняемый при авторизации в Active Directory.

Н.р. все необходимые ярлыки мы уже создали один раз и лежат они у нас в сетевой папке serverlnk

Необходимый нам батник будет состоять всего лишь из нескольких строк:

@xcopy /y serverlnk*.lnk "%USERPROFILE%Рабочий стол"
@echo Ярлыки скопированы на рабочий стол пользователя

Немного поясню.

Переменная %USERPROFILE% указывает на расположения папок текущей учетной записи. Так н.р. если учетная запись называется UserBuh, то полный путь к папкам пользователя будет C:Documents and SettingsUserBuh (для Windows XP) и тогда переменная %USERPROFILE% вернет именно этот путь при обращении, тогда в скрипте фактически выполнится команда:

comments powered by HyperComments

Какова переменная среды для пути к рабочему столу?

хотя я понимаю, что это немного старый пост, я думал, что это может помочь людям в подобной ситуации. Я сделал быструю одну строку VBScript, чтобы вытащить информацию для любой специальной папки, которую вы хотели бы (без проверки ошибок), и она работает следующим образом:

создайте файл ” GetShellFolder.vbs ” со следующей строкой:

WScript.Echo WScript.CreateObject("WScript.Shell").SpecialFolders(WScript.Arguments(0))

Я всегда копирую cscript.exe (32-разрядная версия) в ту же папку, что и пакетный файл, из которого я запускаю это, я предполагаю, что вы делая то же самое (у меня были ситуации, когда пользователи каким-то образом удалили C:Windowssystem32 с их пути или удалось избавиться от cscript.exe, или он заражен или иным образом не работает).

:/>  Как проверить оперативную память на ошибки

теперь скопируйте файл для копирования в ту же папку и создайте там пакетный файл со следующими строками:

for /f "delims=" %%i in ('^""%~dp0cscript.exe" "%~dp0GetShellFolder.vbs" "Desktop" //nologo^"') DO SET SHELLDIR=%%i
copy /y "%~dp0<file_to_copy>" "%SHELLDIR%<file_to_copy>"

в приведенном выше коде вы можете заменить “рабочий стол”на любую допустимую специальную папку (Избранное, StartMenu и т. д. – полный официальный список на https://msdn.microsoft.com/en-us/library/0ea7b5xe(v=vs.84).aspx) и <file_to_copy> с фактическим файлом, который вы хотите разместить там. Это избавляет вас от попыток доступа к реестру (что вы все равно не можете сделать как ограниченный пользователь) и должно быть достаточно простым для адаптации к нескольким приложениям.

Ну и для тех, кто не знает "%~dp0" – это просто каталог, из которого вызывается скрипт. Он работает и для UNC-путей, что делает пакетный файл используя его чрезвычайно портативный. Это специально заканчивается трейлингом””, хотя на первый взгляд это может выглядеть немного странно.