在启动时运行批处理文件
Posted
技术标签:
【中文标题】在启动时运行批处理文件【英文标题】:Run Batch File On Start-up 【发布时间】:2014-02-08 16:46:12 【问题描述】:有没有办法在系统启动时在一个批处理文件中启动多个程序?除此之外,在那个批处理文件中,我想说:一旦我执行了一个程序,等到该程序完全加载,然后执行下一个列出的程序。
任何帮助将不胜感激。
【问题讨论】:
我认为这个问题最好放在超级用户身上。无论如何,启动应用程序都在注册表和特殊文件夹中。你的第二个问题更复杂:你需要一些你想运行的程序的帮助(它是交互式的吗?它会立即执行并返回?) 我的计划是禁用加载任何启动项(在系统配置中),并且只加载系统服务。然后用加载所有启动项的批处理文件替换该系统功能。我不知道它是否会更好,但我想我可以测试一下,看看加载速度是否仍然很慢(在启动时)。我要加载的程序都不需要任何交互性。 【参考方案1】:我在 Win7 中遇到了同样的问题,即在启动时(计算机启动时与有人登录时)运行脚本 (.bat),该脚本会使用 netsh 修改网络参数。最终为我工作的是以下内容:
-
使用管理员帐户登录
点击开始并输入“任务计划程序”并回车
点击“任务计划程序库”
点击屏幕右侧的“新建任务”,设置参数如下:
一个。将用户帐户设置为 SYSTEM
b.选择“以最高权限运行”
c。选择适用于 Windows7 的操作系统
单击“触发器”选项卡,然后单击“新建...” 从下拉菜单中选择“启动时”,点击启用并点击确定 单击“操作选项卡”,然后单击“新建...” 如果您正在运行 .bat 文件,请使用 cmd 作为程序 /c .bat 在添加参数字段中 在创建任务面板上单击“确定”,然后单击“确定”,现在将 被安排。 将 .bat 脚本添加到任务事件中指定的位置。 享受吧。【讨论】:
只是为了实用知识,您甚至可以使用批处理文件添加任务调度器条目。 谢谢,只是我只是在“操作选项卡”上指向实际的批处理文件,它就起作用了。 [+1【参考方案2】:要在启动时运行批处理文件:开始>>所有程序>>右键启动>>打开>>右键单击批处理文件>>创建快捷方式>>将快捷方式拖到启动文件夹 .
文件夹的路径是:[D|C]:\Profiles\User\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
【讨论】:
这是一个简单快速的解决方案。如果您只想解决问题,这很有用。 启动文件夹是什么意思?是否在Win/System32
目录中?
不,在D:\Profiles\User\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
win + r,输入“shell:startup”
奇怪的是直接在那里的bat文件不起作用,我不得不来这里学习它似乎需要一个快捷方式XD。有趣的。谢谢!【参考方案3】:
运行 (WINDOWS + R) 和 类型 shell:startup,将你的 .bat 文件粘贴到那里!
【讨论】:
不错!我怎么不知道?!+ 这太棒了!好吧,如果你有传入bat文件的选项,首先创建一个指向bat文件的链接,然后编辑链接并在Target中添加选项。【参考方案4】:要在系统启动时启动批处理文件,您还可以使用注册表项。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
在这里你可以创建一个字符串。作为名称,您可以选择任何内容,数据是文件的完整路径。
还有注册表键
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
仅在系统下次启动时运行。
【讨论】:
【参考方案5】:有几种方法可以在启动时运行批处理文件。我通常使用的是通过任务调度程序。如果您按下 windows 键,然后键入 task scheduler,它将作为一个选项出现(或通过管理工具找到)。
创建新任务时,您可以从触发选项中进行选择,例如特定用户的“登录时”、工作站解锁等。然后在操作中选择启动程序并将完整路径放入批处理脚本(还有一个选项可以放置所需的任何命令行参数)。
这是一个在 Firefox 中启动 Stack Overflow 的示例脚本:
@echo off
title Auto launch Stack Overflow
start firefox http://***.com/questions/tagged/python+or+sql+or+sqlite+or+plsql+or+oracle+or+windows-7+or+cmd+or+excel+or+access+or+vba+or+excel-vba+or+access-vba?sort=newest
REM Optional - I tend to log these sorts of events so that you can see what has happened afterwards
echo %date% %time%, %computername% >> %logs%\***Auto.csv
exit
【讨论】:
这是一个优雅而强大的解决方案。如果您想提高自己的技术技能,它非常有用。【参考方案6】:运行一次
RunOnce 是一个选项,有几个键可用于在启动时指向启动命令(取决于它涉及用户还是整个系统):
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
设置值:
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v MyBat /D "!C:\mybat.bat"
开头有设置和感叹号,如果脚本存在的值不是0,则不会删除注册表项,每次启动时都会执行脚本
SCHTASKS
你可以使用SCHTASKS和一个触发事件:
SCHTASKS /Create /SC ONEVENT /MO ONLOGON /TN ON_LOGON /tr "c:\some.bat"
或
SCHTASKS /Create /SC ONEVENT /MO ONSTART/TN ON_START /tr "c:\some.bat"
启动文件夹
您还有两个启动文件夹 - 一个用于当前用户,一个用于全局。 在那里你可以复制你的脚本(或快捷方式)以便在启动时启动一个文件
::the global one
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
::for the current user
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
【讨论】:
在Win7中找不到这个文件夹%WINDIR%\Windows\Start Menu\Programs\StartUp
【参考方案7】:
1.将以下行复制到记事本中。
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\Users\toto\your_file.bat" & Chr(34), 0
Set WshShell = Nothing
注意:根据您的要求在脚本中相应地替换批处理文件名/路径。
2.以.VBS扩展名保存文件,例如launch_bat.vbs
3. 创建新的 .bat 文件,在我们的例子中是 your_file.bat
4. 编写 .bat 文件的内容。 示例:
@echo off
php c:\laragon\www\my_app\artisan serve --host=127.0.0.1 --port=8000
5. 运行 your_file.bat 和 ejoy :)
【讨论】:
【参考方案8】:如果您的 Windows 语言与英语不同,您可以通过
启动任务计划程序-
按 Windows+X
选择“计算机管理”的语言翻译
按照 prankin 提供的答案中的说明进行操作
【讨论】:
【参考方案9】:另一种选择是将批处理文件作为服务运行,并将服务的启动设置为“自动”或“自动(延迟启动)”。 查看此question 以获取有关如何操作的更多信息,我个人最喜欢 NSSM。
【讨论】:
以上是关于在启动时运行批处理文件的主要内容,如果未能解决你的问题,请参考以下文章
markdown 在Windows 8和10用户中启动时运行批处理文件