在启动时运行批处理文件

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\Micro‌​soft\Windows\Start Menu\Programs\Startu‌​p

【讨论】:

这是一个简单快速的解决方案。如果您只想解决问题,这很有用。 启动文件夹是什么意思?是否在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用户中启动时运行批处理文件

如何传递运行时参数以从批处理文件启动 exe

在 Pageant 完成加载 SSH 密钥时运行批处理文件

在系统启动时将数据库查询作为计划任务运行

“(在此时出现意外”是从Powershell运行批处理文件时)

windows启动时使用批处理文件启动pm2?