Я пытаюсь создать командный файл, который добавляет ярлык на рабочий стол к общему сетевому ресурсу с помощью mklink.Мой код работал нормально, но теперь я обнаружил, что некоторые пользователи перенаправили свой рабочий стол.Чтобы обойти это, я попытался использовать 'reg query', чтобы получить текущее местоположение рабочего стола
for /f "tokens=3" %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop ^|findstr /ri "REG_EXPAND_SZ"') do set DTLOC=%%a
mklink %DTLOC%\"Shortcut Name" "\\NETWORK-PC\Share Name" /D
. Проблема теперь в том, что для обычного расположения рабочего стола 'reg query' возвращает строку %USERPROFILE%\desktop
, но такнаходится внутри самой переменной (DTLOC), она никогда не преобразуется в фактическое значение.Таким образом, все, что я могу получить от DTLOC - это %USERPROFILE%\desktop
, а не сказать c:\users\username\desktop
.Фактическая команда, которая выводится из пакетного файла, дает:
mklink %USERPROFILE%\desktop\"Shortcut Name" "\\NETWORK-PC\Share Name" /D
Это приводит к сбою создания ярлыка с ошибкой "файл не найден".
Есть ли способ расширитьВыведите из 'reg query', чтобы получить фактическое значение, чтобы его можно было использовать в команде mklink.