Como usar o autohotkey para executar programas de linha de comando?

1

Estou sentado atrás do proxy corporativo, preciso alternar os proxies do git frequentemente ao fazer o desenvolvimento.

Então eu quero usar o autohotkey para criar um script para alternar a configuração de proxy do git. Mas não consigo descobrir como fazer isso:

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

Acima é o que eu tentei, mas eles não funcionam. Por favor ajude.

    
por Aaron Shen 29.12.2015 / 10:13

1 resposta

1

Tentar desembolsar comandos git pode ser difícil de depurar ... aqui está um exemplo de código ...

; 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

Onde ....

Quote(text)
{
    return chr(34) . text . chr(34)
}

Aqui estão algumas coisas que faço para solucionar problemas ...

  1. Colocar o comando git em uma variável facilita a alteração posterior ou referência
  2. Eu gosto de ter uma função quote() , pois usar o = me confunde e tenho a tendência de usar := com mais frequência
  3. Usar Runwait é útil se você tiver comandos sucessivos para executar que não devem ser executados ao mesmo tempo
  4. Usar comspec /c é útil se você precisar redirecionar a saída do script por meio da linha de comando vs. usando um comando totalmente autônomo
  5. Se você precisar depurar um script mais complicado, defina o comando completo que deseja executar em uma variável, pergunte ao usuário se a operação foi bem-sucedida e, se selecionar não, copie o conteúdo para a área de transferência para poder colar na linha de comando. Dessa forma, quando você chegar a algo, você poderá verificar se funcionou e, quando isso não acontecer, você abrirá uma janela de comando, clicará em colar e verá porque falhou.

ou seja,

;---------------------------------------------------------------------------------------------------------
; 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
}
    
por 01.01.2016 / 02:50