Explorer.exe shell:<dir>path

有没有办法如何获得从explorer.exe shell:<dir>的path explorer.exe shell:<dir>batch file中的variables,而不直接在我的文件中使用registry?

交换机在这种情况下似乎没有用处。

您可以使用Windows脚本宿主语言来获取WshShell.SpecialFolders属性 。 示例批处理+ 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特殊文件夹,如“桌面”文件夹,“开始”菜单文件夹和“个人文档”文件夹。 特殊文件夹名称用于索引到集合中以检索所需的特殊文件夹。 如果请求的文件夹(strFolderName)不可用,则SpecialFolders属性将返回一个空字符串。 例如,Windows 95没有AllUsersDesktop文件夹,如果strFolderName是AllUsersDesktop,则返回一个空字符串。

以下特殊文件夹可用:

  • AllUsersDesktop
  • AllUsersStartMenu
  • AllUsersPrograms
  • AllUsersStartup
  • 桌面
  • 最爱
  • 字体
  • 我的文件
  • NETHOOD
  • PRINTHOOD
  • 程式
  • 最近
  • 发给
  • 开始菜单
  • 启动
  • 模板