%USERPROFILE% 变量不起作用

use*_*720 18 windows command-line environment-variables

如果我尝试使用命令在命令提示符中创建文件

mkdir C:\Users\Tristan\AppData\Roaming\modinstaller\recovery
mkdir C:\Users\Tristan\AppData\Roaming\modinstaller\mods
Run Code Online (Sandbox Code Playgroud)

我的计算机将毫无问题地创建文件。

但是,如果我使用命令

mkdir C:\Users\%USERPROFILE%\AppData\Roaming\modinstaller\recovery
mkdir C:\Users\%USERPROFILE%\AppData\Roaming\modinstaller\mods
Run Code Online (Sandbox Code Playgroud)

命令提示符响应

The filename, directory name, or volume label syntax is incorrect.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

G K*_*Koe 31

%UserProfile%变量是一个特殊的系统范围的环境变量,它本身是完整的。它包含了%SystemDrive%\Users\{username}

请参阅这张奇妙的表格,其中突出显示了 Windows XP (NT5) 和 Windows Vista/7/8 (NT6) 中变量之间的差异

尝试

mkdir %userprofile%\AppData\Roaming\modinstaller\mods
Run Code Online (Sandbox Code Playgroud)

它的值是当前用户的配置文件目录的位置,在其中找到用户的 HKEY_CURRENT_USER (HKCU) 注册表配置单元 (NTUSER)。


Den*_*nis 15

我假设你混淆了变量%USERPROFILE%%USERNAME%.

默认情况下,%USERPROFILE%C:\Users\%USERNAME%指向同一个位置。由于不能保证这是真的,因此使用%USERPROFILE%是一种更可靠的方法。

一般来说,在调试像这样的命令时

mkdir C:\Users\%USERPROFILE%\AppData\Roaming\modinstaller\recovery
Run Code Online (Sandbox Code Playgroud)

你的第一步应该是预先准备echo

命令

echo mkdir C:\Users\%USERPROFILE%\AppData\Roaming\modinstaller\recovery
Run Code Online (Sandbox Code Playgroud)

会向您展示以下内容:

mkdir C:\Users\C:\Users\Tristan\AppData\Roaming\modinstaller\recovery
Run Code Online (Sandbox Code Playgroud)

这显然不是你想要的。

您还可以%USERPROFILE%通过执行查询的值

set USERPROFILE
Run Code Online (Sandbox Code Playgroud)

要查看所有当前定义的环境变量,请执行

set
Run Code Online (Sandbox Code Playgroud)


Spe*_*186 9

实际上,OP 不仅在寻找 C:\Users\Someone,而且还在寻找该用户的 AppData\Roaming 文件夹。所以,最快的路径是使用

%APPDATA%
Run Code Online (Sandbox Code Playgroud)

在 OP 的例子中,他会使用

mkdir %APPDATA%\modinstaller\recovery
mkdir %APPDATA%\modinstaller\mods
Run Code Online (Sandbox Code Playgroud)