Board logo

标题: [系统相关] [已解决]批处理shutdown 命令,能否显示倒计时窗口? [打印本页]

作者: jszw666    时间: 2023-8-12 19:20     标题: [已解决]批处理shutdown 命令,能否显示倒计时窗口?

本帖最后由 jszw666 于 2023-8-15 10:48 编辑

win10下,shutdown 命令后,能不能,一直显示一个, 倒计时 的窗口 ?
或者托盘有个提示,也好。

感谢指教,谢谢!
作者: Nsqs    时间: 2023-8-13 03:31

本帖最后由 Nsqs 于 2023-8-13 15:22 编辑
  1. using namespace System.Windows.Forms
  2. using namespace System.Drawing
  3. param([int]$Seconds=-1)
  4. [Application]::EnableVisualStyles()
  5. if($Seconds -eq -1){exit}
  6. (('410fad640fad640fad2d0fad540fad790fad700fad650fad200fad270fad750fad730fad690fad6e0fad670fad200fad530fad790fad730fad740fad650fad6d0fad2e0fad520fad750fad6e0fad740fad690fad6d0fad650fad2e0fad490fad6e0fad740fad650fad720fad6f0fad700fad530fad650fad720fad760fad690fad630fad650fad730fad3b0fad700fad750fad620fad6c0fad690fad630fad200fad630fad6c0fad610fad730fad730fad200fad4d0fad730fad670fad540fad690fad6d0fad650fad6f0fad750fad740fad7b0fad5b0fad440fad6c0fad6c0fad490fad6d0fad700fad6f0fad720fad740fad280fad220fad750fad730fad650fad720fad330fad320fad220fad290fad5d0fad700fad750fad620fad6c0fad690fad630fad200fad730fad740fad610fad740fad690fad630fad200fad650fad780fad740fad650fad720fad6e0fad200fad690fad6e0fad740fad200fad4d0fad650fad730fad730fad610fad670fad650fad420fad6f0fad780fad540fad690fad6d0fad650fad6f0fad750fad740fad280fad690fad6e0fad740fad200fad680fad770fad6e0fad640fad2c0fad200fad730fad740fad720fad690fad6e0fad670fad200fad6e0fad490fad6e0fad640fad650fad780fad2c0fad730fad740fad720fad690fad6e0fad670fad200fad6c0fad700fad430fad610fad700fad740fad690fad6f0fad6e0fad2c0fad690fad6e0fad740fad200fad770fad540fad790fad700fad650fad2c0fad690fad6e0fad740fad200fad770fad6c0fad610fad6e0fad670fad650fad2c0fad690fad6e0fad740fad200fad640fad770fad540fad690fad6d0fad650fad6f0fad750fad740fad290fad3b0fad7d0fad270fad3b0fad240fad700fad610fad740fad680fad3d0fad5b0fad530fad790fad730fad740fad650fad6d0fad2e0fad490fad4f0fad2e0fad460fad690fad6c0fad650fad690fad6e0fad660fad6f0fad5d0fad3a0fad3a0fad6e0fad650fad770fad280fad240fad4d0fad790fad490fad6e0fad760fad6f0fad630fad610fad740fad690fad6f0fad6e0fad2e0fad4d0fad790fad430fad6f0fad6d0fad6d0fad610fad6e0fad640fad2e0fad4e0fad610fad6d0fad650fad290fad2e0fad420fad610fad730fad650fad4e0fad610fad6d0fad650fad3b0fad240fad6d0fad730fad670fad3d0fad5b0fad4d0fad690fad630fad720fad6f0fad730fad6f0fad660fad740fad2e0fad560fad690fad730fad750fad610fad6c0fad420fad610fad730fad690fad630fad2e0fad490fad6e0fad740fad650fad720fad610fad630fad740fad690fad6f0fad6e0fad5d0fad3a0fad3a0fad4d0fad730fad670fad420fad6f0fad780fad280fad270fad8bf70fad74060fad89e30fad4e000fad4e0b0fad52b30fad52a80fad4eba0fad6c110fad76840fad8f9b0fad82e60fad210fad200fad510fad510fad3a0fad380fad320fad330fad370fad370fad370fad390fad320fad310fad200fad4f600fad613f0fad610f0fad652f0fad63010fad4f5c0fad80050fad54170fad3f0fad270fad2c0fad340fad380fad2b0fad340fad2c0fad240fad700fad610fad740fad680fad290fad3b0fad5b0fad760fad6f0fad690fad640fad5d0fad400fad280fad690fad660fad280fad240fad6d0fad730fad670fad200fad2d0fad650fad710fad200fad360fad290fad7b0fad5b0fad4d0fad690fad630fad720fad6f0fad730fad6f0fad660fad740fad2e0fad560fad690fad730fad750fad610fad6c0fad420fad610fad730fad690fad630fad2e0fad490fad6e0fad740fad650fad720fad610fad630fad740fad690fad6f0fad6e0fad5d0fad3a0fad3a0fad4d0fad730fad670fad420fad6f0fad780fad280fad270fad611f0fad8c220fad60a80fad76840fad652f0fad63010fad210fad270fad2c0fad300fad2c0fad240fad700fad610fad740fad680fad290fad7d0fad650fad6c0fad730fad650fad7b0fad5b0fad4d0fad730fad670fad540fad690fad6d0fad650fad6f0fad750fad740fad5d0fad3a0fad3a0fad4d0fad650fad730fad730fad610fad670fad650fad420fad6f0fad780fad540fad690fad6d0fad650fad6f0fad750fad740fad280fad280fad280fad670fad700fad730fad200fad2d0fad690fad640fad200fad240fad700fad690fad640fad290fad2e0fad4d0fad610fad690fad6e0fad570fad690fad6e0fad640fad6f0fad770fad480fad610fad6e0fad640fad6c0fad650fad290fad2c0fad200fad220fad611f0fad8c220fad4f600fad76840fad4e0d0fad652f0fad63010fad2e0fad2e0fad2e0fad380fad380fad360fad220fad2c0fad200fad240fad700fad610fad740fad680fad2c0fad200fad300fad2c0fad200fad300fad2c0fad200fad330fad300fad300fad300fad290fad3b0fad650fad780fad690fad740fad7d0fad29'  -split '0fsd|3we|ckb|psfw|0fad'|%{try{$x=$_;[char][int]('0x{0}' -f $_)}catch{[int]('0x{0}' -f $x)}}) -join '')|iex
  7. if($Seconds -eq 0){shutdown -a -f -t 0}
  8. Add-Type -AssemblyName System.Windows.Forms
  9. function Quit{
  10.         $Timer.Stop()
  11.         $CountDown.Stop()
  12.         $Form.Dispose()
  13. }
  14. function SetColor-ExitButton{
  15.     param([KnownColor]$Color)
  16.     $Pen=[Pen]::new([Color]::$Color)
  17.     $StartPoint=[PointF]@{X=$ExitButton.Width-3;Y=$ExitButton.Height-3}
  18.     $EndPoint=[PointF]@{X=3;Y=3}
  19.     $g.DrawLine($Pen,$StartPoint,$EndPoint)
  20.     $StartPoint=[PointF]@{X=$ExitButton.Width-3;Y=3}
  21.     $EndPoint=[PointF]@{X=3;Y=$ExitButton.Height-3}
  22.     $g.DrawLine($Pen,$StartPoint,$EndPoint)
  23.     $Rect=[Rectangle]::new(0,0,$ExitButton.Width-1,$ExitButton.Height-1)
  24.     $g.DrawRectangle($Pen,$Rect)
  25. }
  26. [bool]$Global:Enter=$false
  27. [bool]$Global:Leave=$true
  28. $CountDown=[System.Diagnostics.Stopwatch]::new()
  29. $Timer=[Timer]::new()
  30. $Timer.Interval=1
  31. $Screen=[Screen]::PrimaryScreen.WorkingArea
  32. $Form=[Form]::new()
  33. $Form=[Form]@{
  34.     StartPosition=0
  35.     Size=[Size]::new(100,50)
  36.     FormBorderStyle=0
  37. }
  38. $ExitButton=[Button]::new()
  39. $ExitButton.Size=[Size]::new(15,15)
  40. $TimeLabel=[Label]::new()
  41. $TitleLabel=[Label]@{
  42.     ForeColor=[Color]::Red
  43.     Font =[Font]::new('幼圆',12)
  44.     Text='剩余时间'
  45.     AutoSize=0
  46.     Height=20
  47. }
  48. [Graphics]$g=$Form.CreateGraphics()
  49. $TextWidth=$g.MeasureString($TitleLabel.Text,$TitleLabel.Font)
  50. $Point=[Point]::new(($Form.Width-$TextWidth.Width)/2,($Form.Height-$TextWidth.Height)/2-15)
  51. $TitleLabel.Location=$Point
  52. $TimeLabel=[Label]@{
  53.     ForeColor=[Color]::FromArgb(100,100,100)
  54.     Font=[Font]::new('幼圆',11)
  55.     Text='00:00:00.00'
  56. }
  57. $TextWidth=$g.MeasureString($TimeLabel.Text,$TimeLabel.Font)
  58. $Point=[Point]::new(($Form.Width-$TextWidth.Width)/2,($Form.Height-$TextWidth.Height)/2+3)
  59. $TimeLabel.Location=$Point
  60. $Form.Add_Activated{
  61.     $Form.Location=[Point]::new($Screen.Width-$Form.Width,$Screen.Height-$Form.Height)
  62.     $ExitButton.Location=[Point]::new($Form.Width-$ExitButton.Width,0)
  63.     $Timer.Start()
  64.     $CountDown.Start()
  65. }
  66. $Form.Add_Disposed{
  67.     Quit
  68. }
  69. $Timer.Add_Tick{
  70.     $TimeLabel.Text=[timespan]::FromSeconds($Seconds-$CountDown.Elapsed.TotalSeconds).ToString('hh\:mm\:ss\.ff')
  71.     if($CountDown.Elapsed.TotalSeconds -ge $Seconds){
  72.         shutdown -s -f -t 0 #关机
  73.         Quit
  74.     }
  75. }
  76. $ExitButton.Add_Click{
  77.     Quit
  78. }
  79. $ExitButton.Add_MouseEnter{
  80.     $Global:Enter=$true
  81.     $Global:Leave=$false
  82. }
  83. $ExitButton.Add_MouseLeave{
  84.     $Global:Enter=$false
  85.     $Global:Leave=$true
  86. }
  87. $ExitButton.Add_Paint{
  88.     param($sender,[PaintEventArgs]$Paint)
  89.     [Graphics]$g=$Paint.Graphics
  90.     $g.Clear($Form.BackColor)
  91.     if($Leave){
  92.         SetColor-ExitButton Black
  93.     }else{
  94.         SetColor-ExitButton Red
  95.     }
  96. }
  97. $Form.Controls.AddRange(($ExitButton,$TitleLabel,$TimeLabel))
  98. [void]$Form.ShowDialog()
复制代码
给你做了一个
使用方法:
1.以上代码保存为PowerShell脚本文件
2.改名为StopComputer.ps1
3.然后丢到C:\Windows\System32文件夹下
4.打开运行或PowerShell、cmd都行,
5.最后直接在命令行下输入代码:
  1. start {powershell} {-ExecutionPolicy ByPass "StopComputer" -Seconds 300} -WindowStyle Hidden
复制代码
参数-Seconds 是倒计时(单位:秒)
设置多少自己决定

1、2、3、4条要是都不会自己操作,那就算了
作者: wanghan519    时间: 2023-8-13 04:04

有个powershell模块叫anybox,挺好玩的
  1. if((Show-AnyBox -Buttons 取消 -Timeout 7 -Countdown -Message 即将关闭).TimedOut){shutdown}
复制代码

作者: jszw666    时间: 2023-8-13 12:58

首先,万分感谢您,辛辛苦苦写了这么长,为您的付出,表示敬意!感谢!

我马上按照您的指导,保存、存放、测试。不管结果如何,您的诚意和付出,是我学习的榜样!

大咖您辛苦了!
作者: jszw666    时间: 2023-8-13 13:01

回复 2# Nsqs

首先,万分感谢您,辛辛苦苦写了这么长,为您的付出,表示敬意!感谢!

我马上按照您的指导,保存、存放、测试。不管结果如何,您的诚意和付出,是我学习的榜样!

大咖您辛苦了!
作者: jszw666    时间: 2023-8-13 14:29

本帖最后由 jszw666 于 2023-8-13 14:53 编辑

回复 2# Nsqs

大神,管理员PowerShell 运行了,没能成功。。。想 发图片,可是,48K图片,符合要求,上传失败。
弹出 StopComputer 窗口提示:感谢你的不支持....886
右键:使用powershell运行 StopComputer.ps1 ,结果提示,同上;

如果直接 贴在 cmd 中,提示:windows 找不到 {powershell}。
作者: Nsqs    时间: 2023-8-13 15:00

本帖最后由 Nsqs 于 2023-8-13 15:04 编辑

StopComputer.ps1,不过是一个命令,不是直接双击运行的,需要在PowerShell里输入代码
  1. start {powershell} {-ExecutionPolicy ByPass "StopComputer" -Seconds 300} -WindowStyle Hidden
复制代码
通过这个代码来调用StopComputer,直接双击执行不了,另外重新更新了一下参数逻辑,会看起来更合理一点
作者: jszw666    时间: 2023-8-13 19:52

回复 7# Nsqs

给大神详细汇报操作过程:

01、复制大神的 106行代码,8-13 15:22 编辑 过的;
02、粘贴到 记事本 ,另存为:编码ANSI,名称+后缀 StopComputer.ps1;
03、复制代码
       start {powershell} {-ExecutionPolicy ByPass "StopComputer" -Seconds 300} -WindowStyle Hidden
       粘贴到记事本,备用;

04、复制文件 StopComputer.ps1 ,粘贴到 C:\Windows\System32 目录下;
05、复制大神 300秒的 这行代码;
06、开始 →→ windows PowerShell →→ 右击 windows PowerShell ,管理员运行 →→ ctrl+v
       windows PowerShell 窗口中显示了 大神的命令:
       start {powershell} {-ExecutionPolicy ByPass "StopComputer" -Seconds 300} -WindowStyle Hidden
07、回车;
08、弹出 StopComputer 窗口提示,很快自动退出了:
       “感谢你的不支持....886”
       我,感觉是  没成功 。
09、shutdown /a ,提示:没有任何进行中的关机过程,无法终止系统关机。

大神费心了,辛苦了!请大咖明示,我执行后结果报错。错哪个步骤呢?
作者: Nsqs    时间: 2023-8-13 20:48

本帖最后由 Nsqs 于 2023-8-13 20:52 编辑
回复  Nsqs

给大神详细汇报操作过程:

01、复制大神的 106行代码,8-13 15:22 编辑 过的;
02、粘贴 ...
jszw666 发表于 2023-8-13 19:52
  1. start {powershell} {-ExecutionPolicy ByPass "StopComputer" -Seconds 300} -WindowStyle Hidden
复制代码
这段代码是单独用的哦,不能和2楼代码合起来用的,你检查一下

另外还有一种排错办法
如果你的StopComputer.ps1 已经放在system32下了,那么用下面代码测试一下效果
  1. StopComputer -Seconds 300
复制代码
如果这个时候正常运行,能显示倒计时,那么就对了,另外我代码下午的时候更新过在2楼
作者: jszw666    时间: 2023-8-13 22:45

回复 9# Nsqs

01、两段代码,必须单独使用,我是知道的。要不然,也不会是 两段 了;
02、106行代码,我就是重新复制的,你更新过的。
       ”本帖最后由 Nsqs 于 2023-8-13 15:22 编辑“
03、StopComputer -Seconds 300 命令后,提示:
       StopComputer : 无法加载文件 C:\Windows\system32\StopComputer.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
       所在位置 行:1 字符: 1
       + StopComputer -Seconds 300
04、start {powershell} {-ExecutionPolicy ByPass "StopComputer" -Seconds 300} -WindowStyle Hidden
       运行后,还是原来的结果:感谢你的不支持....886

在您的 引领 下,我再自己慢慢琢磨琢磨,学习学习吧。不能总是 麻烦你  没完没了的 。
虽然,由于我自身的原因,这个问题,现在还没有完全解决,但,小白在此还是:

真诚的感谢 大咖 Nsqs 您的热心、专业的引领、指导!再次表示 衷心感谢 !
作者: Nsqs    时间: 2023-8-14 00:15

回复  Nsqs

01、两段代码,必须单独使用,我是知道的。要不然,也不会是 两段 了;
02、106行代码,我 ...
jszw666 发表于 2023-8-13 22:45


你这个是因为你电脑禁用了PowerShell
在管理员权限下用PowerShell 运行下面这段代码
  1. Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
复制代码

作者: 帝尊    时间: 2023-8-15 12:03

直接运行批处理文件可以吗?
  1. @echo off
  2. title 关闭计算机
  3. echo 计算机将在5分钟后关闭,请确保您尽快保存重要文件。
  4. timeout /t 300
  5. shutdown /s /t 1
复制代码

作者: mzzyb    时间: 2023-8-15 15:40

我也用过,shutdown命令定时关电脑,一般电脑系统自带提醒,win10会在关机前10分钟提醒你,win7会在关机前5分钟还是3分钟提醒,是弹窗的那种,我猜想可以在哪里细节设置一下
作者: BingjianREMIX    时间: 2023-8-15 17:12

回复 13# mzzyb


    干脆一点做一个定时器




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2