%USERNAME%变量

时间:2017-01-19 09:05:26

标签: windows cmd

我以前的用户帐户出现了一些登录问题。因此,管理员在同一台PC上为我创建了一个新的用户帐户。

问题:现在我必须编写一个通用脚本(也将在其他PC中使用)。在此脚本中,我必须指定桌面的路径。我正在使用以下命令(仅此处示例)行,除了我的电脑以外的任何地方都可以使用

cd "C:\Users\%USERNAME%\Desktop"
pause 

它无法在我的电脑上工作,因为它将旧用户名分配给%USERNAME%变量,因此尝试进入之前不存在的用户名桌面(我删除了旧用户文件夹)。

如何获取分配给%USERNAME%变量的正确用户名(新用户名)?

1 个答案:

答案 0 :(得分:1)

您可以从注册表中为当前用户检索配置为 Desktop 的文件夹

@echo off
    setlocal enableextensions disabledelayedexpansion

    for /f "tokens=2,*" %%a in ('
        reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v desktop
        ^| find "REG_"
    ') do call set "desktopFolder=%%b"

    echo %desktopFolder%

请注意,默认情况下,请求的注册表项为REG_EXPAND_SZ类型,它可以包含需要扩展的环境变量引用。这就是call set而不是直接set的原因,我们需要强制对检索到的值进行第二次解析以获得完整的展开文件夹路径。