Aprire la finestra CMD, eseguire il file batch dalla finestra CMD, quindi chiudere la finestra CMD


-1

Ho provato a cercare un esempio di come farlo senza successo, incluso con autohotkey (sono molto un noob con AHK). Quello che sto cercando di fare è aprire una finestra di comando nella posizione di Explorer in cui mi trovo, eseguire un programma batch che si trova in una posizione ricercata dalla variabile ambientale "percorso", quindi chiudere la finestra di comando. Quello che ho provato in AHK è:

LWin & Return::

if WinActive("ahk_class CabinetWClass")

or WinActive("ahk_class ExploreWClass")

{

  Send {Shift Down}{AppsKey}{Shift Up}

  Sleep 10

  Send w{enter}

  Sleep 10

  run fp.bat

  Sleep 10

Send,{LAlt Down}{Space Down}{Space Up}{LAlt Up}{c Down}

}

else

{

  run, cmd, C:\

}

return

La finestra di comando si apre correttamente, ma il file batch sembra essere eseguito al di fuori della finestra di comando aperta e la finestra di Explorer si chiude invece della finestra di comando.

Sono in esecuzione Windows 10 Pro

Sono abbastanza vicino a quello che sto cercando di realizzare con lo script AHK che ho incluso sopra. E quello che sto cercando di fare è avere la combinazione KB della "Chiave di Windows" e la "Chiave di ritorno" aprire una finestra di comando nella posizione corrente di Explorer in cui sto lavorando in una finestra della GUI di Explorer, eseguire un batch specifico file lì (nel mio caso fp.bat) e poi chiudi la finestra di comando precedentemente aperta restituendomi nella finestra della GUI Explorer dove ho iniziato.

Quello che sta accadendo con il mio script AHK è che la finestra di comando si apre con successo, ma quando il file batch viene eseguito, non viene eseguito nella finestra dei comandi aperta, ma viene eseguito come se fossi appena entrato dalla ricerca / run box (I vedere una finestra diversa lampeggiare velocemente e chiudere), e quindi la finestra di Explorer si chiude piuttosto che la finestra di comando - lasciandomi con una finestra di comando aperta nella posizione corretta, ma che non ha eseguito il file batch. È come se sto perdendo il focus dalla finestra di comando e alla finestra di Explorer quando eseguo il 2 ° e il 3 ° passo (esegui il file batch e poi chiudi la finestra dei comandi aperta).

Forse quello che sto cercando di fare non può essere fatto ...


cmd /c Esegui comando e quindi terminare?
DavidPostill

Sto provando a creare un tasto rapido KB che farà tutto con una combinazione di tasti usando AHK.
MrGadget

Risposte:


0

Con considerazione del tuo aggiornamento, perché non inviare le chiavi per eseguire il file batch direttamente al prompt dei comandi?

if WinActive("ahk_class CabinetWClass") or WinActive("ahk_class ExploreWClass")
{
  Send {Shift Down}{AppsKey}{Shift Up}
  Sleep 10
  Send w
  Sleep 10
  WinWaitActive, ahk_exe cmd.exe
  Sleep 10
  Send fp.bat{Enter}
  ...

psouza4, vorrei aver capito abbastanza bene l'AHK per capire cosa fa la linea WinWait ... ma so che quello che hai suggerito ha risolto il mio problema e quindi grazie mille! Sto imparando AHK molto lentamente trovando degli esempi che eseguono compiti / funzioni specifici e poi leggendo gli elementi inclusi, ecc., Quindi provando ad applicarli altrove in forma modificata. Quindi di nuovo grazie per l'assit e un nuovo elemento nel mio KB.
MrGadget

Nessun problema e grazie in anticipo per aver accettato la mia soluzione. Cordiali saluti: WinWait letteralmente mette in pausa lo script AHK fino a quando non appare la finestra desiderata. Invece di cercare il testo del titolo della didascalia della finestra, stiamo dicendo ad AHK di cercare un processo con il nome di cmd.exe da visualizzare. Maggiori informazioni qui: ahkscript.org/docs/commands/WinWait.htm
psouza4

Dopo due anni di funzionamento senza problemi, ha smesso di funzionare dopo l'aggiornamento di Windows 10 Fall Creators. Ora la prima volta che lo eseguo viene creata una "Nuova cartella" e quindi nei successivi tentativi non accade nulla (apparentemente). Qualche idea su come ripristinare la funzionalità?
MrGadget

0

Forse integra la tua soluzione con il CMDOW open-source gratuito. Lo uso molto nella mia automazione da riga di comando:

http://www.commandline.co.uk/cmdow/

È possibile chiudere le finestre con / CLS e / END, come questi contenuti di file batch:

(Fp.bat)

TITLE Automation ID 123456
...

(un altro file batch che chiude fp.bat)

CMDOW.EXE "*Automation ID 123456*" /END

Suppongo che fp.bat non finisca con grazia, quindi la terminazione forzata.


Grazie per aver cercato di aiutare, psouza4 e DavidPostill. Ho guardato cmdow, ma temo che la maggior parte di ciò vada sopra la mia testa. Ho modificato il mio post per sperare di aggiungere più chiarezza a ciò che sta accadendo.
MrGadget
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.