Explorer.exe shell:<dir>路径

时间:2016-03-13 13:30:35

标签: windows batch-file explorer

如果不在我的文件中直接使用注册表,如何从explorer.exe shell:<dir>获取ArrayList<Hashmap<String,String>>到批处理文件中的变量?

在这种情况下,

path似乎没有用。

1 个答案:

答案 0 :(得分:1)

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

     

可以使用以下特殊文件夹:

     
      
  • AllUsersDesktop
  •   
  • AllUsersStartMenu
  •   
  • AllUsersPrograms
  •   
  • AllUsersStartup
  •   
  • 桌面
  •   
  • 收藏夹
  •   
  • 字体
  •   
  • 我的文档
  •   
  • NETHOOD
  •   
  • PRINTHOOD
  •   
  • 程序
  •   
  • 最近
  •   
  • 的SendTo
  •   
  • 的StartMenu
  •   
  • 启动
  •   
  • 模板
  •