2015-12-31 3 views
0

Я работал над небольшим сценарием, который должен запускаться на фоне моего компьютера. У меня уже есть скрипт, который работает, и все, кроме одного, что часы поиска и поиска Google не нашли ответа.Windows startup с файлом pyw не закрывается cmd

Файл имеет .pyw расширение, и когда я запустить его из командной строки:

pythonw File.pyw 

окно CMD будет продолжаться и дать мне еще один запрос, не запуская простаивает, как это было бы с регулярным. py файл.

Когда я дважды щелкаю файл, окно cmd открывается и закрывается без проблем, как и предполагалось. Это все идеально для меня.

Однако я пытался сделать небольшой командный файл:

cd C:\Users\(my name)\Desktop 
pythonw File.pyw 

и я застрял, что в папке автозагрузки окон. Однако, когда я перезапустил свой компьютер, чтобы проверить, будет ли он работать, он откроет окно cmd, но не закрывает его. Я не могу понять, почему. Я пробовал все, что я могу думать, в том числе наклеивания File.pyw непосредственно в папке автозагрузки, и пытается поставить команду на выход прямо в пакетном файле, как так:

cd C:\Users\(my name)\Desktop 
pythonw File.pyw 
exit 

Но, как вы можете, вероятно, догадаться, что не удалось. Я пытался поставить команду непосредственно в моем коде, так прямо до конца, это была линия

os.system("exit") 

, но после того, как реализовать это не будет работать, я просто взял его. (Важная деталь: последняя строка кода установлена ​​так, чтобы зацикливать ее до тех пор, пока программа не закроется. Вот почему я пытаюсь использовать расширение pyw, поэтому консоль может закрыться до завершения файла)

Далее я сократил командный файл должен быть только одной строкой:

pythonw.exe C:\Users\(my name)\Desktop\File.pyw 

но это все еще не сработает. Когда командный файл запущен, я получаю открытое окно cmd с введенной командой, но он работает как обычный .py-файл, а не закрывает окно cmd.

Может ли кто-нибудь помочь мне разобраться, почему консоль не закрывается, когда команда запускается из файла .batch, но будет ли она выполняться непосредственно из командной строки?

UPDATE:

скрипт предназначен, чтобы добавить быстрое сочетание клавиш, чтобы закрыть задачу, в частности Google Chrome, когда я нажимаю «+» в два раза быстрее. Вот мой полный код (минус некоторые личные данные)

import os 
import sys 
import pyHook, pythoncom 

setting key to be '+' to avoid accidental usage. 
def OnKeyBoardEvent(event): 
    global prevPlus, escPushed 
    if event.Ascii == 43: 
     if prevPlus == None: 
      prevPlus = event.Time 
     else: 
      if event.Time - prevPlus <= 1000: 
       os.system("taskkill /IM chrome.exe") 
       prevPlus = event.Time 
      else: 
       prevPlus = event.Time 
    elif event.Ascii == 27: 
     if escPushed == None: 
      escPushed = event.Time 
     else: 
      if event.Time - escPushed <= 1000: 
      sys.exit() 
      else: 
       escPushed = event.Time 


getter = pyHook.HookManager() 
getter.KeyDown = OnKeyBoardEvent 
getter.HookKeyboard() 

prevPlus = None 
escPushed = None 

pythoncom.PumpMessages() 

Это все прекрасно работает, когда я бегу его от PyCharm, или из ЦМД, но когда я положил его в C: \ Users (мое имя) \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup, а затем попробуйте, ничего не происходит. Я предполагаю, что это потому, что окна запускают файл и выходят из него раньше, чем что-либо происходит, но я действительно не уверен. Мне просто нужно решение, которое запускает его при запуске и вводит мой ключ, пока я не выключится.

+0

http://serverfault.com/questions/9038/run-a-bat-file-in-a-scheduled-task-without-a-window – Bender

+0

Я попытался с помощью VBS файл для отправки команд, но консоль все еще не работает. Есть ли способ сделать эквивалент двойного щелчка на файле из командной строки? – JustDucky

+0

вы можете выйти, если вы вызываете свой скрипт из командного файла. Http://ss64.com/nt/exit.html – Bender

ответ

0

Итак, мой последний подход состоял в том, чтобы связать файл VBS (как это было упомянуто в комментариях). Оказалось, что я делаю это неправильно и смешиваю типы файлов, поэтому у меня были странные ошибки.Этот файл VBS назывался BAT-файлом, поэтому окно cmd не появилось. Затем этот файл BAT вызывал мою программу, которая по какой-то причине лучше работала при вызове из cmd, чем когда она была только что выполнена на месте. Теперь он запускается при запуске, и окно cmd не появляется, поэтому это хорошее исправление, хотя и неэффективное.

0

Используйте команду «начать» в вашем .cmd-файле; удалите «exit».
Как это:

cd C:\Users\(my name)\Desktop 
start pythonw File.pyw 
Смежные вопросы