file - 获取另一个变量中的批处理文件变量的值
问题描述
我正在尝试创建一个批处理文件,使用“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 查询”返回字符串%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
推荐阅读
- symfony - Symfony4。仅在静态文件中缺少 ACAO 标头
- bots - 是否可以使用电报机器人白白管理员推广将频道消息转发给自己?
- r - 是否有一种编程方式可以在 R 中创建一个嵌套的小标题列表
- numpy - 两个 3D 数组的条件和;条件是一维数组
- c# - 当图像保存在 AJAX JSON C# ASPNET 中时自动刷新gridview父页面
- python - Replace() 函数在 DataFrame 列中不起作用
- windows - 从内核调试器(windbg)调试用户模式进程异常
- c++ - 线性向量搜索太慢,无法在线判断
- java - 使用广度优先搜索算法存储迷宫求解的路径
- c++ - c ++迭代器,替代语法?