判断按键盘是否好使的开机自启动PowerShell脚本

ops/2025/3/4 7:11:01/

一、ps1脚本

文件名:KeyboardCheck.ps1

Function WaitForKeyPress($TimeoutInSeconds) {$KeyPressed = $false$deadline = (Get-Date).AddSeconds($TimeoutInSeconds)# 显示提示信息Write-Host "请在 $TimeoutInSeconds 秒内按下任意键(长时间没有检测到按下按键会被认为键盘可能有问题)" -ForegroundColor Blue# 使用 ReadKey 和 Sleep 来实现等待while ((Get-Date) -lt $deadline -and !$KeyPressed) {if ([Console]::KeyAvailable) {# 按键被按下了$key = [Console]::ReadKey($true)  # $true 表示不显示按键Write-Host "检测到按键 '$($key.KeyChar)' ($($key.Key))" -ForegroundColor Green$KeyPressed = $true} else {Start-Sleep -Milliseconds 100  # 延迟 100 毫秒}}if ($KeyPressed) {Write-Host "在 $TimeoutInSeconds 秒内按下了按键。"} else {Write-Host "$TimeoutInSeconds 秒内没有按键!你的键盘可能有问题!" -ForegroundColor Red}# 返回是否检测到按键的值return $KeyPressed
}Function ExitWithCountdown {param ([int]$Seconds = 10  # 默认倒计时时间为10秒)Write-HostWrite-Host "脚本将在 $Seconds 秒后自动关闭窗口" -ForegroundColor Magentafor ($i = $Seconds; $i -gt 0; $i--) {Write-Host -NoNewline "`r正在退出... {$i}秒后关闭窗口..."Start-Sleep -Seconds 1}
}# 获取5秒内是否按下了任意键
$IsKeyPressed = WaitForKeyPress -TimeoutInSeconds 5# 根据 $IsKeyPressed 的值调用 cmd.exe
if ($IsKeyPressed) {Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo cmd_t" -NoNewWindow -Wait
} else {Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo cmd_f" -NoNewWindow -Wait
}# 延迟退出
ExitWithCountdown

二、开机自启动

打开路径:%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
将下面的代码保存到名为start_KeyboardCheck.bat的文件中
(代码中的文件路径自行修改)

@echo offecho.
echo ScriptPath:%~dp0set "ps1Path=C:\MyScript\KeyboardCheck.ps1"if exist "%ps1Path%" (echo File "%ps1Path%" existsPowerShell -NoLogo -ExecutionPolicy Bypass -File "%ps1Path%"
) else (echo File "%ps1Path%" does not exist, please check the path!pause
)

三、效果

在这里插入图片描述

四、有什么用

额*****,没啥用,配合这个知乎贴如何禁用笔记本自带键盘?,免得真的没键盘用😓


http://www.ppmy.cn/ops/162983.html

相关文章

PyTorch的.pt文件详解

之前我们已经讨论了字符级语言模型的训练、保存结构以及数据集下载。现在我们需要深层次的进行实际项目的训练,需要深入理解模型保存的机制,特别是在PyTorch中.pt文件的具体内部结构和内容,.pt文件保存了哪些具体内容,比如参数、架构还是其他信息,以及这些数据是如何组织的…

常用空间数据结构对比

空间数据结构是用来组织和查询多维空间数据的算法结构。它们在地理信息系统 (GIS)、计算机图形学、机器人导航、机器学习等领域非常重要。以下是几种常见空间数据结构的对比: 1. 四叉树(Quadtree) 适用场景:二维空间数据&#x…

自学微信小程序的第六天

DAY6 1、使用录音API首先需要通过wx.getRecorderManager()方法获取到一个RecorderManager实例,该实例是一个全局唯一的录音管理器,用于实现录音功能。 表32:RecorderManager实例的常用方法 方法名称 说明 start() 开始录音 pause() 暂停录音 resume() 继续录音 stop() 停止…

Leetcode 面试150题(二)

一、题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作&#x…

Go语言学习笔记(六)——标准库

文章目录 一、fmt输出fmt.Print格式化占位符FprintSprintErrorf 输入fmt.Scanfmt.Scanffmt.Scanlnfmt.Fsanf 二、os权限说明os.Createos.Mkdiros.MkdirAllos.Removeos.RemoveAllos.Getwdos.Chdiros.TempDiros.Renameos.Chmodos.Chown文件进程相关Signal 环境相关 三、timeTime类…

华为开源自研AI框架昇思MindSpore应用案例:基于MindSpore框架实现one-stage目标检测模型SSD

SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上,SSD对于输入尺寸300x300的网络,达到74.3%mAP以及59FPS;对于512x512的网络,…

版图自动化连接算法开发 00003 ------ 添加两个中间点实现 Manhattan 方式连接两个给定的坐标点

版图自动化连接算法开发 00003 ------ 添加两个中间点实现 Manhattan 方式连接两个给定的坐标点 引言正文引言 必读文章 ------ 版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点 之前,我们实现了添加单个中间点的 Manhattan 连接方式,这里,我们将添加两个中…

Spring Boot spring-boot-maven-plugin 参数配置详解

一 spring-boot-maven-plugin 插件的5个Goals spring-boot:repackage,默认goal。在mvn package之后,再次打包可执行的jar/war,同时保留mvn package生成的jar/war为.origin;重新打包存在的jar或者war包从而使他们可以在命令行使用…