shell:startup
”,并点击“确定”按钮。cmd
(bat),powershell
(ps1),vbs
(vbs)文件或者它们的快捷方式powershell.exe -NoLogo -NonInteractive -ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\path\to\your_script.ps1"
Pause
等指令和Tee-Object
可以用来跟踪日志任务计划命令行程序schtasks commands | Microsoft Learn
PS ️16:08:44 [C:\exes\alist\log] 100% schtasks.exe /?
SCHTASKS /parameter [arguments]
描述:
允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任
务。
参数列表:
/Create 创建新计划任务。
/Delete 删除计划任务。
/Query 显示所有计划任务。
/Change 更改计划任务属性。
/Run 按需运行计划任务。
/End 中止当前正在运行的计划任务。
/ShowSid 显示与计划的任务名称相应的安全标识符。
/? 显示此帮助消息。
Examples:
SCHTASKS
SCHTASKS /?
SCHTASKS /Run /?
SCHTASKS /End /?
SCHTASKS /Create /?
SCHTASKS /Delete /?
SCHTASKS /Query /?
SCHTASKS /Change /?
SCHTASKS /ShowSid /?
开发windows 应用中相关api使用任务计划程序 - Win32 apps | Microsoft Learn
图形界面taskschd
Task Scheduler Overview | Microsoft Learn
命令行输入taskschd 启动任务计划程序 |
创建新的任务计划 | |
---|---|---|
taskschd 是windows自带的程序,十分古老但是有用C:\Windows\System32\taskschd.msc |
可以选择定期执行,也可以选择条件触发,比如开机启动(运行) |
可以配置权限等,操作丰富
# 为了更快的执行开机自启动脚本的执行速度,请在$startup_user目录内创建startup_basic.lnk,并且设置参数为如下
# powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\repos\scripts\startup\startup_basic.ps1"
#这样就不会加载不必要的配置,从而快速完成任务
#可以选择隐藏powershell窗口静默执行:使用选项-WindowStyle Hidden
# $scripts = 'C:\repos\scripts'
#导入基本的powershell环境变量和字符串
ImportGlobalEnvs
# 日志:记录当前时间
# "test:$(Get-Date)"> "$scripts\startup\log\log"
#配置延迟启动(单位:秒)
function sleep_tips
{
param(
$delay = 0
)
if ($delay)
{
Write-Output "after $delay seconds run next task"
}
Start-Sleep $delay
}
# @REM 检查网络可用性,拖延一段时间(ping 2次即可,一般不需要太多次)
$log_home = "$Scripts\startup\log"
Set-Location $log_home
$log_file = "$log_home\log.txt"
ping www.baidu.com -n 2 | Tee-Object $log_file #初始化日志文件,这里不用append参数,只保留一次记录
Get-Date | Tee-Object -Append $log_file
#后台(不打印日志到前台)启动alist服务
# $scriptBlock = {
# # $alist_home = 'c:\exes\alist'
# # Set-Location $alist_home
# # # (vbs免弹出窗口,同时也不会由信息输出,所以可以不用后台执行)
# # "$alist_home\startup.vbs" | Invoke-Expression
# # 当窗口退出后,如下写法会停止alist服务,因此下面的写法不可用
# # "$alist_home\alist.exe server" | Invoke-Expression
# }
# Start-Job -ScriptBlock $scriptBlock
Set-Location $alist_home
# (vbs免弹出窗口,同时也不会由信息输出,所以可以不用后台执行)
"$alist_home\startup.vbs" | Invoke-Expression
sleep_tips -delay 4
importAliasGlobal #导入常用命令别名(会占用若干秒的时间)
#尝试重定向输出到日志文件,但这在powershell似乎无法做到,我们用start-job虽然隐藏了输出,却无法重定向到文件
# 如果想要接受start-job启动的任务返回结果,使用Receive-Job -Id $job.id,其中$job是Start-job 赋值的对象
#然而这里调用的vbs没有输出结果,因此是空白的输出,就不需要定向到日志文件中
#有些软件,例如alist server输出内容无法使用 >,2>等重定向阻止输出到标准输出终端(不知道cmd能不能做到)
#执行已经编写好的cmd脚本文件,对于老系统,可以直接使用cmd脚本
# C:\repos\scripts\startup\MapCloudDrive.bat
$MapLog = "$scripts\startup\log\MapLog.txt"
# "c:\repos\scripts\startup\log\MapLog"
net use W: http://localhost:5244/dav /p:yes /savecred *> $MapLog # 可以输出为日志 *> "$MapLog"
'' | Tee-Object -Append $MapLog
net use | Tee-Object -Append $MapLog
Get-Date | Tee-Object -Append $MapLog
#查看日志文件
Get-Content $log_home/*
# 用pause指令阻止powershell窗口自动关闭
# Pause
Start-Sleep 2
#配置需要自启动的软件(缓慢启动)
# "$snipaste_home\snipaste" | Invoke-Expression
# "$ditto_home\ditto" | Invoke-Expression
snipaste
ditto
#注意cfw会将日志打印占用终端,导致无法退出终端的问题,最为开机自启,如果使用 hidden参数隐藏窗口也是可以的
# Start-Job -ScriptBlock { & 'C:\exes\cfw\Cfw.exe' }
cfw *> null #将错误信息统统放空