【问题标题】:Windows 10 Environmental Variable for Documents folder用于 Documents 文件夹的 Windows 10 环境变量
【发布时间】:2016-04-25 15:10:12
【问题描述】:

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

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

【问题讨论】:

  • 是什么让你认为会有一个环境变量呢?此外,您可以通过在命令行中输入set 查看所有当前环境变量的列表。

标签: batch-file windows-10


【解决方案1】:

嗯,你问的不是万无一失的。你指的是图书馆。库的问题在于,一个库中可以包含多个文件夹。

但是,有一种合理的方法可以得到你想要的。 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 Script Host 而不是 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】:

    我没有看到一种完全可靠的方法来批量执行此操作。我知道这超出了要求,但我认为这个 vbscript 会可靠地工作。

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

    【讨论】:

    • 伟大的思想都一样。 :) +1 同时使用 ShellSpecialFolder 常量。奇怪的是,您的方法 WSH.CreateObject('Wscript.Shell').SpecialFolders('MyDocuments') 与我的方法 WSH.CreateObject('Shell.Application').Namespace(0x05).Self.Path 具有相同的输出,并且具有完全相同的字符数。
    【解决方案3】:

    这里没有环境变量。相反,您可以查看 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%
    

    【讨论】:

    • 这在我查看的系统中不存在。
    • 也适合我。我的Documents 库指向D:\Documents,这给出了正确的输出。不过,可能必须修改库才能创建 HKCU 值。更多的测试可能是值得的。
    • 它可能存在也可能不存在,但即使存在,您还必须检查此键值以进行自定义:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal
    猜你喜欢
    • 1970-01-01
    • 2011-05-29
    • 2016-04-17
    • 2016-04-02
    • 1970-01-01
    • 2021-10-15
    • 2017-10-31
    • 1970-01-01
    • 2019-06-25
    相关资源
    最近更新 更多