【问题标题】:How to pipe specific cmd output line to another batch?如何将特定的 cmd 输出行通过管道传输到另一个批次?
【发布时间】:2014-11-17 08:29:10
【问题描述】:

如何将特定的 cmd 输出行通过管道传送到另一个批次?

例如:

command DSQUERY USER -samid *loginname* | DSGET USER -loscr

它查找 AD 中的用户在其登录脚本字段中的实际登录脚本名称是什么。我想将此输出传输到另一个批处理文件,该批处理文件为此特定用户打开登录脚本文件。

上述命令的BUT输出输出三行:

loscr
"script name"
dsget succeeded

如何抑制第一行和第三行并仅通过管道输出第二行的输出?!

谢谢。

【问题讨论】:

    标签: batch-file cmd active-directory dsquery


    【解决方案1】:
    @echo off
    
    for /f "skip=1 tokens=*" %%a in ('command DSQUERY USER -samid *loginname*') do (
       if not defined second_line set "second_line=%%a"
    )
    
    DSGET USER -loscr %second_line%
    

    ?

    【讨论】:

    • npocmaka:谢谢。在我使用您建议的脚本运行批处理后,cmd 停止响应并且不提供任何输出。对此有何建议?
    • 删除 @echo off 看看会发生什么...由于我的机器上没有 DS,我无法测试脚本...
    • npocmaka:没有@echo,它表明它在最后一个括号之后(或命令 DSGET USER -loscr %second_line% 之前)卡住/停止响应。谢谢
    • @alex 将 if not defined second_line set "second_line=%%a" 更改为 echo %%a 以查看 for 循环的输出。确保 command DSQUERY USER -samid *loginname* 是您要执行的内容....
    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多