如何写一个脚本倒计时锁屏

wen 实用脚本 3

本文目录导读:

如何写一个脚本倒计时锁屏

  1. Windows版本(PowerShell脚本)
  2. macOS版本(Bash脚本)
  3. 增强版Windows脚本(带GUI界面)
  4. 使用方法
  5. 注意事项

我来为您提供一个简单实用的倒计时锁屏脚本,这里提供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版本:

  1. 复制代码保存为 lock_timer.ps1
  2. 在PowerShell中运行:.\lock_timer.ps1
  3. 输入倒计时分钟数,回车确定

macOS版本:

  1. 复制代码保存为 lock_timer.sh
  2. 赋予执行权限:chmod +x lock_timer.sh
  3. 运行:./lock_timer.sh

注意事项

  1. 权限要求

    • Windows可能需要以管理员身份运行
    • macOS可能需要在系统设置中允许终端控制
  2. 取消操作

    • Ctrl+C 可以随时取消倒计时
  3. 功能扩展

    • 可以添加开机自启动
    • 可以设置为定时任务
    • 可以添加声音提醒

您可以把这个脚本保存为文件,需要时运行即可,如果需要在特定时间自动执行,可以配合系统的任务计划程序或cron定时任务使用。

抱歉,评论功能暂时关闭!