2014-12-13 168 views
1

如何在变量中获取Windows下载Shell文件夹?在批处理文件中获取Windows下载文件夹的路径(下载shell文件夹)

根据this。我试过了:

@echo off 
SETLOCAL 

FOR /F "usebackq" %%f IN (`PowerShell -NoProfile -Command "Write-Host([Environment]::GetFolderPath('{374DE290-123F-4565-9164-39C4925E467B}'))"`) DO (SET "DOWNLOAD_FOLDER=%%f") 

@ECHO %DOWNLOAD_FOLDER% 
pause 

这是行不通的。

+0

'%userprofile%\ Downloads'有什么问题? – SomethingDark 2014-12-13 15:51:00

+0

让我怀疑PowerShell的'GetFolderPath'方法允许一个GUID作为一个有效的参数。说:可能的枚举值是“桌面,程序,个人,MyDocuments,收藏夹,启动,最近,SendTo,StartMenu,MyMusic,DesktopDirectory,MyComputer,模板,ApplicationData,LocalApplicationData,InternetCache,饼干,历史,CommonApplicationData,系统,ProgramFiles, MyPictures,CommonProgramFiles“。并且[文件夹GUID](http://msdn.microsoft.com/en-us/library/windows/desktop/dd378457(v = vs.85).aspx)的默认值为'%USERPROFILE%\ Downloads' – JosefZ 2014-12-13 16:15:59

+0

谢谢。这只是尝试使用GUID。因为它也在“Shell文件夹”上。 – PureFox 2014-12-14 13:09:28

回答

0

这里是一个批处理代码,以获得几个下载目录,我认为这是自我解释。

此批处理代码是在Windows XP 86只测试与Internet Explorer 8

@echo off 
setlocal 

set "Reg32=%SystemRoot%\System32\reg.exe" 
if not "%ProgramFiles(x86)%"=="" "Reg32=%SystemRoot%\SysWOW64\reg.exe" 

for /F "usebackq skip=4 tokens=3*" %%U in (`%Reg32% query "HKCU\Software\Microsoft\Internet Explorer" /v "Download Directory"`) do (
    set "DownloadDirectory=%%V" 
    goto GetSaveDir 
) 

:GetSaveDir 
for /F "usebackq skip=4 tokens=3*" %%U in (`%Reg32% query "HKCU\Software\Microsoft\Internet Explorer\Main" /v "Save Directory"`) do (
    set "SaveDirectory=%%V" 
    goto OutputResults 
) 

:OutputResults 
cls 
echo. 

echo Download directory of user account is: 
echo. 
echo %USERPROFILE%\Downloads 
echo. 
echo. 

if "%DownloadDirectory:~-1%"=="\" set "DownloadDirectory=%DownloadDirectory:~0,-1%" 
echo Download directory of Internet Explorer is: 
echo. 
echo %DownloadDirectory% 
echo. 
echo. 

if "%SaveDirectory:~-1%"=="\" set "SaveDirectory=%SaveDirectory:~0,-1%" 
echo Save directory of Internet Explorer is: 
echo. 
echo %SaveDirectory% 
endlocal 

UPDATE

但对于Windows Vista/7/8/8.1不同批次的需要作为用于下载的目录在Internet Explorer 8/9/10/11的Windows版本中定义不同。

下一批代码应该在所有的Windows操作系统运行从Windows 2000开始

它输出的硬盘(第一个),或在Windows注册表(其余三)发现的目录。

@echo off 
setlocal 

set "Reg32=%SystemRoot%\System32\reg.exe" 
if not "%ProgramFiles(x86)%"=="" "Reg32=%SystemRoot%\SysWOW64\reg.exe" 

for /F "usebackq skip=1 tokens=1,2*" %%T in (`%Reg32% query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "{374DE290-123F-4565-9164-39C4925E467B}" 2^>nul`) do (
    if /I "%%T"=="{374DE290-123F-4565-9164-39C4925E467B}" (
     set "DownloadShellFolder=%%V" 
     goto GetDownloadDirectory 
    ) 
) 

:GetDownloadDirectory 
for /F "usebackq skip=1 tokens=1,2,3*" %%S in (`%Reg32% query "HKCU\Software\Microsoft\Internet Explorer" /v "Download Directory" 2^>nul`) do (
    if /I "%%S"=="Download" (
     if /I "%%T"=="Directory" (
      set "DownloadDirectory=%%V" 
      goto GetSaveDirectory 
     ) 
    ) 
) 

:GetSaveDirectory 
for /F "usebackq skip=1 tokens=1,2,3*" %%S in (`%Reg32% query "HKCU\Software\Microsoft\Internet Explorer\Main" /v "Save Directory" 2^>nul`) do (
    if /I "%%S"=="Save" (
     if /I "%%T"=="Directory" (
      set "SaveDirectory=%%V" 
      goto OutputResults 
     ) 
    ) 
) 

:OutputResults 
cls 
echo. 

if not exist "%USERPROFILE%\Downloads" goto OutputShellFolder 
echo Download directory of user account is: 
echo. 
echo %USERPROFILE%\Downloads 
echo. 
echo. 

:OutputShellFolder 
if "%DownloadShellFolder%"=="" goto OutputDownloadDir 
if "%DownloadShellFolder:~-1%"=="\" set "DownloadShellFolder=%DownloadShellFolder:~0,-1%" 
echo Download shell folder of user account is: 
echo. 
echo %DownloadShellFolder% 
echo. 
echo. 

:OutputDownloadDir 
if "%DownloadDirectory%"=="" goto OutputSaveDir 
if "%DownloadDirectory:~-1%"=="\" set "DownloadDirectory=%DownloadDirectory:~0,-1%" 
echo Download directory of Internet Explorer is: 
echo. 
echo %DownloadDirectory% 
echo. 
echo. 

:OutputSaveDir 
if "%SaveDirectory%"=="" goto EndBatch 
if "%SaveDirectory:~-1%"=="\" set "SaveDirectory=%SaveDirectory:~0,-1%" 
echo Save directory of Internet Explorer is: 
echo. 
echo %SaveDirectory% 

:EndBatch 
endlocal 
+0

谢谢。那%USERPROFILE%\ Downloads我知道。另一个我没有。但运行批处理会出现错误:“命令的语法不正确 On:if”%DownloadDirectory:〜-1%“==”\“set”DownloadDirectory =%DownloadDirectory:〜0,-1%“ – PureFox 2014-12-14 13:02:00

+1

在Win7/8中,HKCU \ Software \ Microsoft \ Internet Explorer不支持对默认下载文件夹的隐藏。它位于:HKCU \ Software \ Microsoft \ Windows \ Current \ Version \ Explorer \ Shell文件夹和HKCU \ Software \ Microsoft \ Windows \ Current \ Version \ Explorer \ Shell文件夹和HKCU \ Software \ Microsoft \ Windows \ Current \ Version \ Explorer \用户Shell文件夹并识别bij GUID:{374DE290-123F-4565-9164-39C4925E467B} – PureFox 2014-12-14 13:19:19

+0

最后一个CMD文件的作品,非常感谢,我为我的网站写了一篇关于下载文件夹的文章,我在其中使用了一个批处理文件,现在用户必须指定他们自己的下载文件夹,我可以在批处理文件中使用你的解决方案吗?当然,提到你的学分 – PureFox 2014-12-14 18:58:35

相关问题