【发布时间】:2011-05-25 04:38:30
【问题描述】:
我有一个 python 文件,我正在运行该文件。
如果 Windows 关闭并再次启动,我如何在每次 Windows 启动时运行该文件?
【问题讨论】:
我有一个 python 文件,我正在运行该文件。
如果 Windows 关闭并再次启动,我如何在每次 Windows 启动时运行该文件?
【问题讨论】:
根据脚本的作用,您可以:
实际的解决方案取决于您的需求以及脚本实际执行的操作。
关于差异的一些说明:
如您所见,这一切都归结为您想做什么;例如,如果它仅用于您的目的,我会简单地将它拖到启动文件夹中。
无论如何,最近我倾向于解决方案#4,作为最快和最直接的方法。
【讨论】:
if 可以简单地将以下代码添加到您的脚本中。不过,这只适用于 Windows!:
import getpass
USER_NAME = getpass.getuser()
def add_to_startup(file_path=""):
if file_path == "":
file_path = os.path.dirname(os.path.realpath(__file__))
bat_path = r'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup' % USER_NAME
with open(bat_path + '\\' + "open.bat", "w+") as bat_file:
bat_file.write(r'start "" %s' % file_path)
此函数将在启动文件夹中创建一个 bat 文件来运行您的脚本。
file_path 是您希望在计算机打开时运行的文件的路径。您可以将其留空,以便将运行脚本添加到启动中。
【讨论】:
start后面有""。我认为它必须在 %s 周围才能处理空格,但是当我尝试这样做时,它不起作用(只是打开了一个命令提示符)
在以下启动目录中(Windows XP 上至少存在此路径):
C:\Documents and Settings\All Users\Start Menu\Programs\Startup
为你的 python 程序添加一个快捷方式。它应该在每次系统启动时执行。
【讨论】:
bat 文件,内容为python path_to_your_python_program.py
尚未对此进行测试,但我会创建一个包含“python yourfile.py”的批处理文件并将其放入自动启动文件夹中。
在 Windows 7 上,您可以在此处找到它:
%APPDATA%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
【讨论】:
shell:common startup
点击Win+R
输入 shell:startup
拖放你的python文件my_script.py
my_script.py 更改为 my_script.pyw
run_my_script.cmd:python path\to\your\my_script.py
【讨论】:
你可以把run_script.cmd放进去
C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
run_script.cmd 的内容
python path\to\your\script.py
【讨论】:
尝试将条目添加到 "HKLM/SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" 。 右键->新建->字符串值->添加文件路径
【讨论】:
创建一个exe文件,我使用pyinstaller "yourCode.py"
将执行文件添加到您的注册表项: https://cmatskas.com/configure-a-runonce-task-on-windows/
【讨论】:
import winreg
def set_autostart_registry(app_name, key_data=None, autostart: bool = True) -> bool:
"""
Create/update/delete Windows autostart registry key
! Windows ONLY
! If the function fails, OSError is raised.
:param app_name: A string containing the name of the application name
:param key_data: A string that specifies the application path.
:param autostart: True - create/update autostart key / False - delete autostart key
:return: True - Success / False - Error, app name dont exist
"""
with winreg.OpenKey(
key=winreg.HKEY_CURRENT_USER,
sub_key=r'Software\Microsoft\Windows\CurrentVersion\Run',
reserved=0,
access=winreg.KEY_ALL_ACCESS,
) as key:
try:
if autostart:
winreg.SetValueEx(key, app_name, 0, winreg.REG_SZ, key_data)
else:
winreg.DeleteValue(key, app_name)
except OSError:
return False
return True
def check_autostart_registry(value_name):
"""
Check Windows autostart registry status
! Windows ONLY
! If the function fails, OSError is raised.
:param value_name: A string containing the name of the application name
:return: True - Exist / False - Not exist
"""
with winreg.OpenKey(
key=winreg.HKEY_CURRENT_USER,
sub_key=r'Software\Microsoft\Windows\CurrentVersion\Run',
reserved=0,
access=winreg.KEY_ALL_ACCESS,
) as key:
idx = 0
while idx < 1_000: # Max 1.000 values
try:
key_name, _, _ = winreg.EnumValue(key, idx)
if key_name == value_name:
return True
idx += 1
except OSError:
break
return False
创建自动启动:
set_autostart_registry('App name', r'C:\test\x.exe')
更新自动启动:
set_autostart_registry('App name', r'C:\test\y.exe')
删除自动启动:
set_autostart_registry('App name', autostart=False)
检查自动启动:
if check_autostart_registry('App name'):
【讨论】:
上面提到的所有方法都不起作用我都试过了,我会告诉你更简单的解决方案和windows任务调度器的替代方案
创建一个包含内容的 .bat 文件 "您的项目解释器的地址" "您的带有脚本名称的 Python 脚本的地址"
将此bat文件存入window启动文件夹(默认隐藏) 仅供参考:查找窗口启动文件夹 然后按 windos+r 输入 shell:startup -- 它会直接带你到启动文件夹
将 bat 文件复制到那里,并以相同的格式复制以下 2 个地址, 然后只需重新启动系统或关闭并启动。
代码将在打开后 20 秒内自动运行。
稍后谢谢我
【讨论】: