通常,您可以只指定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 Music
, My Pictures
和My 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"
你也可以在“控制面板”中查找“环境变量”(或类似的东西),然后编辑它。