【问题标题】:Multi-lined command output set as variable多行命令输出设置为变量
【发布时间】:2022-09-27 15:23:09
【问题描述】:

所以我用谷歌搜索了stackoverflow;我认为我正在使用的库的输出和它的结构方式使任何答案都不起作用。

我为命令提示符下载了一个名为 totp2 的 Windows 库。我在我的批处理文件中执行命令并且工作正常,但它想要返回我通过的行。

我正在寻找运行命令,并且只将最后一行分配给一个变量;从最后一行删除单词OTP:

C:\\Users\\Dan\\Desktop\\devBash> t2otp.exe QQRZO4QIGPJFXS2QXDIL4JUO2KKQCPTOF2D5AX5M3R2VH5NM2ZUSXIXGP4WPMVTR sha256 6 30

T2OTP v2 - Command line TOTP Generator (c) TOKEN2
Algorithm: sha256
Seed: QQRZO4QIGPJFXS2QXDIL4JUO2KKQCPTOF2D5AX5M3R2VH5NM2ZUSXIXGP4WPMVTR
Interval: 30 seconds
OTP length: 6 digits
    
OTP: 666323

以上就是它返回命令提示符结果的方式,代码在命令输出的第 7 行。

当前代码(仅用于测试的硬编码命令):

For /F \"EOL=/\" %%A In (\'t2otp.exe QQRZO4QIGPJFXS2QXDIL4JUO2KKQCPTOF2D5AX5M3R2VH5NM2ZUSXIXGP4WPMVTR sha256 6 30\') Do Set \"totp=%%A\"

然而,这只会返回OTP:

当前结果:

OTP: 666323

需要的结果:

666323

任何帮助都非常感谢。

是的;这是一个演示秘密。

  • for /f \"tokens=2delims=: \" %%A... 应该派生该数据
  • 哇.....太简单了...我尝试了大约 5 种不同版本的标记和分隔符,然后又回去阅读文档...谢谢...一堆 <3

标签: windows batch-file command-line


【解决方案1】:
For /F "Tokens=2 eol=/" %%A In ('t2otp.exe QQRZO4QIGPJFXS2QXDIL4JUO2KKQCPTOF2D5AX5M3R2VH5NM2ZUSXIXGP4WPMVTR sha256 6 30') Do Set "hash=%%A"

当答案如此简单时,容易感到愚蠢。解决了。

【讨论】:

    【解决方案2】:

    一个更简单的答案是在命令末尾添加“clean”参数(如 Token2 的文档中所述):

    • 最后一个参数是可选的,如果参数等于 'loop' ,如果参数是“清洁”该工具将仅生成 OTP

    所以下面的代码:

    t2otp.exe QQRZO4QIGPJFXS2QXDIL4JUO2KKQCPTOF2D5AX5M3R2VH5NM2ZUSXIXGP4WPMVTR sha256 6 30 **clean**
    

    只会给你 OTP(在你的例子中是 6 位数)

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      相关资源
      最近更新 更多