2016-03-13 2 views
1

Есть ли способ получить path от explorer.exe shell:<dir> переменной в пакетном файле без использования реестра непосредственно в моем файле?Explorer.exe shell: <dir> путь

Switches, как представляется, не является полезным в этом случае.

ответ

1

Вы можете использовать язык хоста Windows Script, чтобы получить WshShell.SpecialFolders property. Пример пакетного + гибридное решение JScript (должно быть дано .bat расширение):

@if (@CodeSection == @Batch) @then 
@echo off & setlocal 

call :getSpecialFolder AllUsersDesktop 
echo %AllUsersDesktop% 

call :getSpecialFolder Fonts 
echo %Fonts% 

goto :EOF 

:getSpecialFolder <folderName=returnValue> 
for /f "delims=" %%I in ('cscript /nologo /e:JScript "%~f0" "%~1"') do set "%~1=%%I" 
goto :EOF 

@end // end batch begin JScript 
WSH.Echo(WSH.CreateObject('WScript.Shell').SpecialFolders(WSH.Arguments(0))); 

Из документации MSDN:

объекта, WshSpecialFolders представляет собой набор. Он содержит весь набор специальных папок Windows, таких как папка «Рабочий стол», папка «Пуск» и папка «Личные документы». Специальное имя папки используется для индексации в коллекции, чтобы получить нужную вам специальную папку. Свойство SpecialFolders возвращает пустую строку, если запрашиваемая папка (strFolderName) недоступна. Например, Windows 95 не имеет папки AllUsersDesktop и возвращает пустую строку, если strFolderNameis AllUsersDesktop.

следующие специальные папки доступны:

  • AllUsersDesktop
  • AllUsersStartMenu
  • AllUsersPrograms
  • AllUsersStartup
  • Desktop
  • Избранное
  • шрифты
  • MyDocuments
  • NetHood
  • PrintHood
  • Программы
  • Последние
  • SendTo
  • StartMenu
  • Запуск
  • Шаблоны
Смежные вопросы