Windows 10环境变量文档文件夹

时间:2016-01-19 23:15:36

标签: batch-file windows-10

我正在寻找一个将文件复制到用户的Documents文件夹的批处理文件,但我找不到指示它的环境变量。我可以从用户配置文件路径派生Documents文件夹,但这是不可靠的,因为Windows可以将Documents文件夹移动到任何位置,方法是选择Location选项卡+ Move in the folder properties。

有人知道如何找到该文件夹​​吗?

3 个答案:

答案 0 :(得分:5)

没有环境变量。相反,您可以在Windows注册表中查找它存储Documents文件夹名称的位置,但即使这样也不推荐使用:

@echo off
for /f "tokens=3*" %%p in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal') do (
    set DocumentsFolder=%%p
)
echo %DocumentsFolder%

答案 1 :(得分:3)

嗯,你问的不是傻瓜证明。您所指的是图书馆。而库存在的问题是库中可能包含多个文件夹。

然而,有一种合理的方式来获得你想要的东西。 Windows提供了ShellSpecialFolder个常量,您可以使用Shell.Application COM对象进行枚举。 Documents库的常量为0x05。这是一个PowerShell命令示例:

powershell "(new-object -COM Shell.Application).Namespace(0x05).Self.Path"

我的家用电脑配有120GB SSD启动驱动器和2TB D:驱动器。所以我的文档库指向D:\Documents。上面的命令打印D:\Documents,因为你希望它会。

如果您更喜欢Windows脚本而不是PowerShell(因为WSH要快得多),您可以编写混合批处理+ JScript脚本来完成相同的任务。

@if (@CodeSection == @Batch) @then
@echo off & setlocal

rem // cscript re-evaluates this script with the JScript interpreter
cscript /nologo /e:JScript "%~f0"

goto :EOF
@end // end Batch / begin JScript hybrid chimera

WSH.Echo(WSH.CreateObject('Shell.Application').Namespace(0x05).Self.Path);

您可能还会将letting the user browse视为所需的保存位置,默认为0x05以获取文档。

答案 2 :(得分:3)

我没有看到一种完全可靠的方法来批量执行此操作。我知道这不在请求之内,但我认为这个vbscript可以正常工作。

Option explicit
Dim objShell
Dim strPath

Set objShell = Wscript.CreateObject("Wscript.Shell")
strPath = objShell.SpecialFolders("MyDocuments")
msgbox strPath