我正在运行Windows 7 64位。当我关闭计算机时,我在桌面上打开了许多程序。当我启动计算机时,我希望这些程序自动打开。我知道SaveMyCache,这需要我在每次关闭计算机时都勾选复选框,我想要自动的东西。
.bat
,并将其放置在将放置在用户启动文件夹中的文件中。完成这些操作后,脚本将执行shutdown -s -t 1
并退出。引导后,所有正在运行的程序将再次启动。
我正在运行Windows 7 64位。当我关闭计算机时,我在桌面上打开了许多程序。当我启动计算机时,我希望这些程序自动打开。我知道SaveMyCache,这需要我在每次关闭计算机时都勾选复选框,我想要自动的东西。
.bat
,并将其放置在将放置在用户启动文件夹中的文件中。完成这些操作后,脚本将执行shutdown -s -t 1
并退出。引导后,所有正在运行的程序将再次启动。
Answers:
接近您要求的内容:在电源管理中启用休眠模式,而不是关闭PC,请使用休眠选项。这确实会关闭PC的电源,并使PC恢复到关闭系统电源时的状态。
除此之外,没有内置功能可以满足您的要求。Windows重新启动管理器是为这种情况而创建的,但是软件需要支持它,并且通常仅在安装新软件或安装更新时使用。
因此,我决定创建此Powershell脚本。
执行的动作:
优点:
缺点:
安装在其他路径中的程序-不在程序文件下-在此版本中不会被拾取。当然,这是避免启动本机Windows进程(例如explorer.exe等)所必需的。但是,如果您的路径类似于D:\Apps
安装程序的路径
,则可以修改该行
$ _。Path -match“程序”
至
$ .Path -match“ Program”-或$ .Path -match“ D:\ Apps”
它将完全相同。
现在脚本代码:
###############################
# AUTOMATIC STARTUP GENERATOR #
# ASGEN v.1.0 by mnmnc @ 2014 #
###############################
# VARIABLES
# CURRENT PATH
$current = $(pwd).ToString()
# DESTINATION PATH
$destination_path = "$env:userprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\programs.bat"
# MOVING TO TEMP
cd $env:systemroot\Temp
# REMOVING OLD FILE
del $destination_path
# EMPTY ARRAYS
$arr_names = @()
$arr_paths = @()
# FILLING ARRAYS
Get-Process | Where-Object {$_.Path -match "Program" } | foreach { $arr_names += $_.Name; $arr_paths += $_.Path }
# CREATING FILE
for($i = 0; $i -le $arr_names.count -1; $i++)
{
$out = "`"" + $arr_paths[$i] + "`""
write-output $out | out-file "programs.bat" -append -Encoding ascii
}
# INFO
Write-host "`nFolowwing programs will be started on next boot:`n"
cat programs.bat
Write-host "`n"
# MOVING TO STARTUP FOLDER
mv programs.bat "$destination_path"
# RETURNING
cd $current
exit
Simpy复制此代码并将其粘贴shutdown.ps1
到桌面上的文件中。保存并关闭此文件。现在创建第二个文件shutdown.bat
并放入代码
powershell shutdown.ps1
shutdown -s -t 1
在此文件中。保存并关闭bat文件。现在,您可以将两个文件都移动到首选目录。之后,您可以单击Right Mouse Buttonbat文件并创建该文件的快捷方式。然后点击与Right Mouse Button上一个快捷方式这个时间,选择固定到开始菜单。这会将快捷方式添加到“开始”菜单中。
现在,每次您要关闭PC并保存正在运行的程序以在启动后自动启动时,都可以使用此快捷方式。
编辑 - 包括命令行参数
由于您还希望保存流程命令行参数,因此必须将“填充数组”和“创建文件”部分更改为:
# FILLING ARRAYS
Get-WmiObject Win32_Process | Where-Object { $_.Path -match "Program" } | foreach { $arr_names += $_.Name; $arr_paths += $_.CommandLine; }
# CREATING FILE
for($i = 0; $i -le $arr_names.count -1; $i++)
{
$out = $arr_paths[$i]
write-output $out | out-file "programs.bat" -append -Encoding ascii
}
更改是现在使用WMI而不是get-process。此外,这次必须省略引号。
注意
如果执行脚本时出错,则可能是Powershell的执行策略设置不正确。要更改此权限,您必须以管理员身份打开powershell控制台,然后输入Set-ExecutionPolicy Unrestricted
并在Y
要求确认时输入。而已。应该工作正常。
Startup
文件夹(它们将在登录时重新启动)?