【问题标题】:cmd /C set variablecmd /C 设置变量
【发布时间】:2014-12-05 21:13:18
【问题描述】:

短: 我正在尝试制作一个设置和使用变量的 1 行命令脚本。现在我想出了:

cmd /C "set var=127.0.0.1 & echo %var%"

我希望它输出 127.0.0.1,但它会打印 %var%。

长: 我正在使用 keepass 作为密码管理器,并试图让它自动为我启动一个 RDP 会话。我在 URL 中输入了以下内容:

cmd://cmd /C "cmdkey /generic:TERMSRV/127.0.0.1 /user:{USERNAME} /pass:{PASSWORD} & mstsc.exe /v:127.0.0.1 & cmdkey /delete:TERMSRV/127.0.0.1"

这行得通,但如果我需要更新 ipaddress,我必须触摸 3 个位置而不是 1 个。我尝试将其更改为以下,但它不起作用:

cmd://cmd /C "set sServer=127.0.0.1 & cmdkey /generic:TERMSRV/%sServer% /user:{USERNAME} /pass:{PASSWORD} & mstsc.exe /v:%sServer% & cmdkey /delete:TERMSRV/%sServer%"

【问题讨论】:

  • 无法理解为什么 1 行命令脚本 条件,但 SETLOCAL EnableDelayedExpansionecho !var! 应该会有所帮助。了解更多信息EnableDelayedExpansion
  • 一行需求来自keepass。它的 cmd:// 能力只允许你运行 1 个命令。我用 DelayedExpansion 尝试了几个变体,但还没有找到正确的组合。有人在一天前发布了一个答案,但现在它已经消失了......
  • 另一种方法:cmd://cmd /C "for /F "tokens=*" %G in ("127.0.0.1") do cmdkey /generic:TERMSRV/%G /user:{USERNAME} /pass:{PASSWORD} & mstsc.exe /v:%G & cmdkey /delete:TERMSRV/%G"。因为我对keepass 一无所知,而不是%G 可能是%%G as in a batch script 应该是。

标签: variables cmd keepass


【解决方案1】:

josefZ 评论效果很好。以下命令可以放在keepass中的“URL:”字段中。当您双击该 url 或执行任何其他启动该 url 的操作时,它会自动启动 RPD 并让您登录。

cmd://cmd /C "for /F "tokens=*" %G in ("127.0.0.1") do cmdkey /generic:TERMSRV/%G /user:{USERNAME} /pass:{PASSWORD} & mstsc.exe /v:%G & cmdkey /delete:TERMSRV/%G"

我已经通过 RDP 对 Windows 机器和 Linux 机器进行了测试。

【讨论】:

    猜你喜欢
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多