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

轻拍

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

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 query”返回字符串,%USERPROFILE%\desktop但由于这是在变量本身 (DTLOC) 内,它永远不会解析为实际值。所以我能从 DTLOC 得到的只是%USERPROFILE%\desktop而不是说c:\users\username\desktop. 从批处理文件输出的实际命令给出:

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

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

有没有办法扩展'reg query'的输出以给出实际值,以便它可以在mklink命令中使用。

aschipfl

解决方案是使用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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用批处理制作另一个带有变量的批处理文件?

如何将变量从一个批处理文件传递到另一个批处理文件?

批处理文件变量的另一个变量的一部分

如何使用变量值作为另一个变量(批处理文件)的名称?

如何在另一个批处理文件中调用一个批处理文件?

如何通过另一个批处理文件更新一个批处理文件中的值

从另一个批处理文件调用一个批处理,并从外部批处理中设置内部批处理文件参数

如何通过引用另一个批处理文件将环境变量作为参数传递?

批处理:通过一个变量的值访问另一个变量

如何使用Windows批处理文件从外部文件中搜索值并替换为另一个值

如何从另一个批处理文件在批处理文件中写入管道(|)?

循环调用另一个批处理文件的批处理文件

调用另一个批处理文件的调用批处理文件失败

使批处理文件等待另一个批处理文件

如何从其他目录中的另一个批处理文件中的一个批处理文件中启动exe文件?

变量中的批处理文件值

批处理-如何关闭从另一个批处理文件启动的批处理文件

Windows批处理文件中的数字大于或小于另一个

无法在另一个批处理文件中回显自删除命令

从批处理文件中的变量中删除最后一个字符

批处理IF语句变量在另一个变量中

编写批处理文件:批处理将命令插入到另一个基于cmd的程序中

批处理文件:与另一个实例中的批处理脚本打开的Shell实例进行交互

编写一个.bat文件以选择批处理命令输出的特定部分到批处理文件变量中

批处理文件-搜索单词并提取变量中的下一个单词

在批处理文件中的每个周期增加一个变量?

Windows 批处理文件以提升的权限启动另一个批处理

在另一个文件中获取变量

如何获取在NodeJS中另一个文件中声明的变量的动态值