我使用公司代理,在开发过程中需要频繁切换 git 的代理。
所以我想使用 autohotkey 创建一个脚本来切换 git 的代理设置。但我不知道该怎么做:
Run %comspec% /c ""C:\Program Files\Git\bin\git.exe" "config" "--global" "http.proxy" "http://xxx:8080""
Run %comspec% /c ""C:\Program Files\Git\bin\git.exe" "config" "--global" "https.proxy" "xxx:8080""
;Run, "C:\Program Files\Git\bin\git.exe" config --global http.proxy http://xxx:8080
;Run, "C:\Program Files\Git\bin\git.exe" config --global https.proxy http://xxx:8080
以上是我尝试过的方法,但是没有用。请帮忙。
答案1
尝试执行 git 命令可能会很难调试...这里有一些示例代码...
; need quotes for running inside of cmd (w/ comspec)
; super global to reference it in other functions
global gitExe := quote("C:\Program Files\git\bin\git.exe")
tmpFile := A_Temp . "\gittemp.txt"
fileDelete, %tmpFile%
RunWait, %comspec% /c %gitExe% status > %tmpFile%, %A_ScriptDir%, Hide
FileReadLine, tmpVar1, %tmpFile%, 1
FileReadLine, tmpVar2, %tmpFile%, 2
global WorkingDirectory := "C:\Something"
RunWait, %comspec% /c %gitExe% --global http.proxy http://xxx:8080, %WorkingDirectory%, Hide
在哪里....
Quote(text)
{
return chr(34) . text . chr(34)
}
以下是我为排除故障所做的一些事情...
- 将 git 命令放入变量中,方便以后更改或引用
- 我喜欢使用
quote()
函数,因为使用函数=
会让我感到困惑,而且我倾向于:=
更频繁地使用 Runwait
如果您需要运行连续的命令,但这些命令不应同时执行,则使用comspec /c
如果您需要通过命令行重定向脚本输出,而不是使用完全独立的命令,那么使用会很有帮助- 如果您需要调试更复杂的脚本,请将要运行的完整命令设置为变量,然后询问用户操作是否成功,如果他们选择否,则将内容复制到剪贴板,以便您可以将其粘贴到命令行上。这样,当您遇到某些问题时,您可以检查它是否有效,如果无效,您可以打开命令窗口,点击粘贴,然后查看失败的原因。
IE,
;---------------------------------------------------------------------------------------------------------
; git_CommitAll() - ; Commit everything on the current branch using the commit message
;
;---------------------------------------------------------------------------------------------------------
git_CommitAll(commitMsg)
{
tmpCmd := comspec . " /c " . quote(gitExe . " commit -a -m " . quote(commitMsg))
RunWait, %tmpCmd%, %WorkingDirectory%, hide ; change hard-coded folder as needed
if debug := True ; set this true/false here to use debugging or not
{
msgbox,4,,Did command work right?
IfMsgBox, no
{
clipboard := tmpCmd
msgbox Command has been copied to clipboard`n`n%tmpCmd%`n`nClick OK to continue...
}
}
return True
}