本文目录导读:

我来为您提供一个简单实用的倒计时锁屏脚本,这里提供Windows和macOS两个版本的解决方案:
Windows版本(PowerShell脚本)
# 倒计时锁屏脚本
# 使用方法:在PowerShell中运行本脚本
Write-Host "=== 倒计时锁屏工具 ===" -ForegroundColor Cyan
Write-Host ""
# 获取用户输入的倒计时时间(分钟)
$minutes = Read-Host "请输入倒计时分钟数(直接回车默认5分钟)"
# 默认5分钟
if ([string]::IsNullOrEmpty($minutes)) {
$minutes = 5
}
# 转换为秒
$totalSeconds = [int]$minutes * 60
Write-Host ""
Write-Host "将在 $minutes 分钟后自动锁屏" -ForegroundColor Yellow
Write-Host "按 Ctrl+C 可取消" -ForegroundColor Red
Write-Host ""
# 倒计时循环
for ($i = $totalSeconds; $i -gt 0; $i--) {
$minutesLeft = [math]::Floor($i / 60)
$secondsLeft = $i % 60
# 清除当前行并显示剩余时间
Write-Host "`r剩余时间: $minutesLeft 分 $secondsLeft 秒" -NoNewline -ForegroundColor Green
# 每秒更新一次
Start-Sleep -Seconds 1
}
# 时间到,触发锁屏
Write-Host ""
Write-Host "时间到!正在锁屏..." -ForegroundColor Cyan
# Windows锁屏命令
rundll32.exe user32.dll,LockWorkStation
macOS版本(Bash脚本)
#!/bin/bash
# 倒计时锁屏脚本
# 使用方法:./lock_timer.sh 或 bash lock_timer.sh
echo "=== 倒计时锁屏工具 ==="
echo ""
# 获取用户输入的倒计时时间(分钟)
read -p "请输入倒计时分钟数(直接回车默认5分钟): " minutes
# 默认5分钟
if [ -z "$minutes" ]; then
minutes=5
fi
total_seconds=$((minutes * 60))
echo ""
echo "将在 $minutes 分钟后自动锁屏"
echo "按 Ctrl+C 可取消"
echo ""
# 倒计时循环
while [ $total_seconds -gt 0 ]; do
minutes_left=$((total_seconds / 60))
seconds_left=$((total_seconds % 60))
# 显示剩余时间
printf "\r剩余时间: %d分 %02d秒" $minutes_left $seconds_left
sleep 1
total_seconds=$((total_seconds - 1))
done
echo ""
echo "时间到!正在锁屏..."
# macOS锁屏命令
pmset displaysleepnow
# 或使用以下命令(需要系统偏好设置>安全与隐私>高级 允许)
# osascript -e 'tell application "System Events" to keystroke "q" using {control down, command down}'
增强版Windows脚本(带GUI界面)
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# 创建Windows窗体
$form = New-Object System.Windows.Forms.Form
$form.Text = "倒计时锁屏工具"
$form.Size = New-Object System.Drawing.Size(300, 150)
$form.StartPosition = "CenterScreen"
# 创建标签
$label = New-Object System.Windows.Forms.Label
$label.Text = "请输入倒计时(分钟):"
$label.Location = New-Object System.Drawing.Point(20, 20)
$label.Size = New-Object System.Drawing.Size(180, 20)
# 创建输入框
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(200, 20)
$textBox.Size = New-Object System.Drawing.Size(50, 20)
$textBox.Text = "5"
# 创建开始按钮
$button = New-Object System.Windows.Forms.Button
$button.Text = "开始"
$button.Location = New-Object System.Drawing.Point(100, 60)
$button.Size = New-Object System.Drawing.Size(100, 30)
# 按钮点击事件
$button.Add_Click({
$minutes = [int]$textBox.Text
$form.Close()
Start-Countdown -Minutes $minutes
})
# 添加控件到窗体
$form.Controls.Add($label)
$form.Controls.Add($textBox)
$form.Controls.Add($button)
# 显示窗体
$form.ShowDialog()
# 倒计时函数
function Start-Countdown {
param([int]$Minutes)
$totalSeconds = $Minutes * 60
Write-Host "将在 $Minutes 分钟后锁屏" -ForegroundColor Yellow
for ($i = $totalSeconds; $i -gt 0; $i--) {
$m = [math]::Floor($i / 60)
$s = $i % 60
Write-Host "`r剩余时间: $m 分 $s 秒" -NoNewline -ForegroundColor Green
Start-Sleep -Seconds 1
}
Write-Host "`n时间到!正在锁屏..." -ForegroundColor Cyan
rundll32.exe user32.dll,LockWorkStation
}
使用方法
Windows PowerShell版本:
- 复制代码保存为
lock_timer.ps1 - 在PowerShell中运行:
.\lock_timer.ps1 - 输入倒计时分钟数,回车确定
macOS版本:
- 复制代码保存为
lock_timer.sh - 赋予执行权限:
chmod +x lock_timer.sh - 运行:
./lock_timer.sh
注意事项
-
权限要求:
- Windows可能需要以管理员身份运行
- macOS可能需要在系统设置中允许终端控制
-
取消操作:
- 按
Ctrl+C可以随时取消倒计时
- 按
-
功能扩展:
- 可以添加开机自启动
- 可以设置为定时任务
- 可以添加声音提醒
您可以把这个脚本保存为文件,需要时运行即可,如果需要在特定时间自动执行,可以配合系统的任务计划程序或cron定时任务使用。