Есть ли способ получить path от explorer.exe shell:<dir>
переменной в пакетном файле без использования реестра непосредственно в моем файле?Explorer.exe shell: <dir> путь
Switches, как представляется, не является полезным в этом случае.
Есть ли способ получить path от explorer.exe shell:<dir>
переменной в пакетном файле без использования реестра непосредственно в моем файле?Explorer.exe shell: <dir> путь
Switches, как представляется, не является полезным в этом случае.
Вы можете использовать язык хоста 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
- Запуск
- Шаблоны