第一个窗口:windows - 如何捕获由另一个cmd窗口生成的cmd窗口的输出?-LMLPHP
cmd(mercurial)必须是“以管理员身份运行”(这是与hg.exe通信的一个怪癖,排除了版本和防火墙问题),从而为自己生成一个新的pageant.exe窗口。
第二个窗口:windows - 如何捕获由另一个cmd窗口生成的cmd窗口的输出?-LMLPHP
但是对于一个适时的屏幕截图,似乎没有办法捕捉第二个cmd窗口的详细输出,因为它是暂时的,一旦cmd终止就立即关闭。
我已经尝试过以下方法:
管道至cmd
hg.exe
重定向到文件:
clip
hg push ssh://hg@bitbucket.org/slaiyer/hellwrld | clip开关:
hg push ssh://hg@bitbucket.org/slaiyer/hellwrld > D:\log.txt
不用说,所有的努力都是徒劳的。
有办法做到这一点吗?
我对涉及批处理文件和powershell的解决方案持开放态度,但最好使用本机命令行解决方案。
谢谢。

最佳答案

问题很简单,不能在一个操作中同时提升和重定向输出。
通常的解决方案是提升整个脚本,这也有一个优点,即用户只需确认提升一次,而不必每次调用提升的命令。通常没有任何理由不这样做。
但是,另一种方法是创建一个目标cmd.exe /c且设置了“以管理员身份运行”选项的快捷方式。如果我们把它命名为elevation.lnk你可以这样启动它:

start /wait elevation.lnk "hg push ssh://hg@bitbucket.org/slaiyer/hellwrld | clip"

这种方法不会保留当前目录;如果有必要,请使用
start /wait elevation.lnk "cd /d %cd% && hg push ssh://hg@bitbucket.org/slaiyer/hellwrld | clip"

10-07 13:15
查看更多