用批处理评估重定位的shell文件夹的位置

通常,您可以只指定variables: %USERPROFILE%\Downloads

但是,如果将“下载”文件夹移动到其他位置,则不起作用:

截图

%Downloads%作为独立variables不起作用。 这个文件夹的正确variables是什么,所以我可以在批处理中指定它,并在不同的系统上使用批处理而不修改它?

Windows必须将新的重定位文件夹存储在某处。
这个地方是注册表,下面的批处理将读取包含新位置的注册表值。
参考
我只是用虚拟机进行测试来验证这一点。

 @Echo off&SetLocal EnableExtensions Set "Key=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" Set "Val={374DE290-123F-4565-9164-39C4925E467B}" For /F "Tokens=2*" %%A in ( 'Reg Query "%Key%" /v "%Val%" 2^>Nul ^| Find "%Val%" ' ) Do Set "Downloads=%%B" Echo 'Downloads' location: %Downloads% 

所以批处理会创建你要求的变量%Downloads%
下载文件夹的示例输出移动到c:

 'Downloads' location: C:\Downloads 

编辑:由于val My MusicMy PicturesMy Video
这将解决这些变种

 Set "Key=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" Set "Val=My Video" For /F "Tokens=3*" %%A in ( 'Reg Query "%Key%" /v "%Val%" 2^>Nul ^| Find "%Val%" ' ) Do Set "MyVideo=%%B" Echo Possible 'My Video' location: %MyVideo% Set "Key=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" Set "Val=My Music" For /F "Tokens=3*" %%A in ( 'Reg Query "%Key%" /v "%Val%" 2^>Nul ^| Find "%Val%" ' ) Do Set "MyMusic=%%B" Echo Possible 'My Music' location: %MyMusic% Set "Key=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" Set "Val=My Pictures" For /F "Tokens=3*" %%A in ( 'Reg Query "%Key%" /v "%Val%" 2^>Nul ^| Find "%Val%" ' ) Do Set "MyPictures=%%B" Echo Possible 'My Pictures' location: %MyPictures% 

不幸的是,没有什么像这个变量。

但是,这不应该阻止你:)

在cmd中你可以使用setx来设置环境变量:

setx DOWNLOADS "D:\Downloads"

你也可以在“控制面板”中查找“环境变量”(或类似的东西),然后编辑它。