发布网友 发布时间:2022-04-19 16:50
共2个回答
热心网友 时间:2023-06-26 21:04
复制粘贴到记事本,另存为xx.bat,编码选ANSI<# :
cls
@echo off
rem 整点自动截屏
mode con cols=40 lines=8
if "%~1" equ "" (
start /min "" "%~f0" fk
exit
)
cd /d "%~dp0"
powershell -sta -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default)))"
pause
exit
#>
#截屏图片存放的目录
$folder="C:\ScreenShot";
if(-not (test-path -liter $folder)){[void](md $folder)};
$codes=@'
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
public static class ScreenShot{
public static void Save(string f){
Image img=new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height);
Graphics g=Graphics.FromImage(img);
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), Screen.AllScreens[0].Bounds.Size);
img.Save(f, ImageFormat.Bmp);
}
}
'@;
Add-Type -TypeDefinition $codes -ReferencedAssemblies 'System.Windows.Forms','System.Drawing';
$n=0;while($true){
cls
$now=(get-date).toString('yyyy-MM-dd HH:mm:ss');
write-host 'Keep this window minimized';
write-host 'Do not close this window';
write-host $n.toString();write-host $now;
$m=[regex]::match($now, '00:0[0-9]$');
if($m.Success){
$newfile=$folder.trimend('\')+'\'+($now -replace '[-\s:]|\d\d$','')+'00.bmp';
if(-not (test-path -liter $newfile)){$n++;[ScreenShot]::Save($newfile);};
};
start-sleep -Seconds 1;
}
热心网友 时间:2023-06-26 21:04
批处理脚本自身是无法实现截屏的。因为没有截屏命令。所以需要借助其它命令行程序。而且你的要求还是每隔一小时自动截屏一次,因此两点综合下来,最终的代码不可能简单。
由于代码中集成了第三方命令程序,所以代码很长很长,这里根本无法全部贴出来。
所以请使用以下代码,制作成bat文件后双击运行,进行跳转并下载最终的截屏脚本代码:
@echo off & cls & Title 跳转页面 By 依梦琴瑶以下为最终截屏的部分代码截图以及运行后的效果:
最终截屏创建的图片文件,以“年月日时分秒.png”的格式命名。
PS:该截屏脚本运行后,仅在当天有效,到第二天就不会再执行截屏了,所以你要在第二天重新运行一次脚本,才能继续当天的截屏,以此类推。
还有就是每天运行脚本后,自动截屏功能会在你运行脚本的下一个小时段才开始处理。