【问题标题】:batch start winrs redirecting output批量启动 winrs 重定向输出
【发布时间】:2023-04-02 02:42:02
【问题描述】:

我必须在集群上执行命令来杀死一组进程。

start /wait winrs -r:NODENAME -u:USERNAME  -p:PASSWORD taskkill /FI \"USERNAME eq USER" /f

我无法重定向输出。我在这个网站上发现了类似的问题,但解决方案在这里:

Is there any way to redirect stderr output from a command run with "start" in the Windows command line?

不起作用。我重定向 winrs 命令,但我需要 taskkill 的重定向。 任何想法? 谢谢。

【问题讨论】:

    标签: batch-file redirect winrs


    【解决方案1】:

    这是完全未经测试的,我对胜利者一无所知。但我相信这只是逃避重定向正确次数的问题。假设 n 是转义数,则所需的脱字符数是 2 的 n 次方,减 1 ((2^n)-1)。

    如果您希望将输出重定向到远程计算机上的文件,则必须延迟重定向,直到 WINRS 启动远程进程,因此两次,一次用于 START,一次用于 WINRS

    start /wait winrs -r:NODENAME -u:USERNAME  -p:PASSWORD taskkill /FI \"USERNAME eq USER" /f ^^^>output.txt
    

    我能想到的唯一其他变体是显式启动 cmd.exe 进程来处理重定向,再次使用转义重定向。在这种情况下,我认为您需要三个转义:

    start /wait winrs -r:NODENAME -u:USERNAME  -p:PASSWORD cmd /c taskkill /FI \"USERNAME eq USER" /f ^^^^^^^>output.txt
    

    如果要将输出重定向到本地机器上的文件,则需要重定向 WINRS 的输出(假设 WINRS 显示远程执行进程的输出)。所以应该只需要一次转义。

    start /wait winrs -r:NODENAME -u:USERNAME  -p:PASSWORD taskkill /FI \"USERNAME eq USER" /f ^>output.txt
    

    我很惊讶您需要通过 START 启动 WINRS。我应该认为您可以直接执行该命令,因为您无论如何都打算等待它完成。如果直接启动,并且您希望将输出收集在本地文件中,那么我认为您不需要任何转义。

    winrs -r:NODENAME -u:USERNAME  -p:PASSWORD taskkill /FI \"USERNAME eq USER" /f >output.txt
    

    如果有的话,我希望能对我的哪些建议有效。

    【讨论】:

    • 编辑 - 主要重写答案
    • 我确认只有一次转义的解决方案 ^ 将日志放在远程机器上,我正在尝试恢复文件。您认为有办法在控制台输出上重定向吗?非常感谢
    • 真的,我在运行服务的机器上生成文件时遇到了问题。重定向的文件是在对应节点的机器中产生的
    • @user3419104 - 您是否尝试了没有 START 的最后一个选项?如果有,发生了什么?
    • 我需要使用启动命令。我将日志文件留在远程机器上。到目前为止,可以登录该文件会发生什么。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多