hg.exe
(Mercurial)必须是"以管理员身份运行" (与pageant.exe
通信的怪癖 - 排除了版本和防火墙问题),从而为自己产生了一个新的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
cmd /k
开关:
cmd /k "hg push ssh://hg@bitbucket.org/slaiyer/hellwrld"
毋庸置疑,所有的努力都是徒劳的。
有没有办法实现这一目标? 我对包含批处理文件和PowerShell的解决方法持开放态度,但首选本机命令行解决方案。 感谢。
答案 0 :(得分:1)
首先尝试:它将STDERR重定向到文件,因为有些工具会在那里写消息。
hg push ssh://hg@bitbucket.org/slaiyer/hellwrld > D:\log.txt 2>&1
答案 1 :(得分:1)
问题在于,您无法在单个操作中提升和重定向输出。
通常的解决方案是提升整个脚本,这也有一个优点,即用户只需要确认一次提升而不是每次调用提升命令。通常没有通常任何理由不这样做。
但是,另一种方法是创建一个目标为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"