繁体   English   中英

获取另一个变量中的批处理文件变量的值

[英]Getting the value of a Batch File Variable that is within another Variable

我正在尝试创建一个批处理文件,该文件使用“ mklink”将桌面快捷方式添加到网络共享中。 我的代码工作正常,但是现在我发现一些重定向了桌面的用户。 为了解决这个问题,我尝试使用“ reg查询”来获取当前桌面位置

for /f "tokens=3" %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop  ^|findstr /ri "REG_EXPAND_SZ"') do set DTLOC=%%a
mklink %DTLOC%\"Shortcut Name" "\\NETWORK-PC\Share Name" /D

现在的问题是,对于普通的桌面位置,“ reg查询”返回字符串%USERPROFILE%\\desktop但是由于它位于变量本身(DTLOC)中,因此它永远不会解析为实际值。 所以我只能从DTLOC获得的是%USERPROFILE%\\desktop而不是c:\\users\\username\\desktop 从批处理文件输出的实际命令给出:

mklink %USERPROFILE%\desktop\"Shortcut Name" "\\NETWORK-PC\Share Name" /D

这会导致快捷方式创建失败,并显示“找不到文件”错误。

有没有一种方法可以扩展“ reg query”的输出以提供实际值,以便可以在mklink命令中使用它。

解决方案是使用call ,它引入了命令行的另一个解析阶段,因此嵌套变量也得到了扩展。 另外,让我建议如下修改报价:

for /f "tokens=3" %%a in ('
    reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop ^|findstr /ri "REG_EXPAND_SZ"
') do set "DTLOC=%%a"
call mklink "%DTLOC%\Shortcut Name" "\\NETWORK-PC\Share Name" /D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM