第一个窗口:cmd
(mercurial)必须是“以管理员身份运行”(这是与hg.exe
通信的一个怪癖,排除了版本和防火墙问题),从而为自己生成一个新的pageant.exe
窗口。
第二个窗口:
但是对于一个适时的屏幕截图,似乎没有办法捕捉第二个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"