AD域管理 首次登陆检查,并只执行一次程序运行

情况说明

想在用户首次登陆时,执行特定程序或文件,而只想执行一次

代码说明

  • 获取用户创建时间
set mydir=c:\users\%USERNAME%
for /f "tokens=2 delims==." %%a in ('wmic FSDIR "%mydir:\=\\%" get InstallDate /value^|find "="') do set CreateTime=%%a
set /a CreateTime=%CreateTime:~8,2%*60+%CreateTime:~10,2%

1、获取当前用户的文件夹 2、获取文件夹的创建时间 3、选择文件夹时间,转成分钟,如10:00>>600

  • 获取系统当前时间
set /a SystemTime=%time:~0,2%*60+%time:~3,2%
set /a num=%SystemTime%-%CreateTime%

1、获取当前时间并转换为分钟,如12:00>>720
2、计算时间差结果

  • 判断用户是否新建立
if %num%  60 start d:\\Foxmail邮箱操作指南.html

1、判断时间是否

  • 完整批处理
@echo off
TIMEOUT /T 20

set mydir=c:\users\%USERNAME%
for /f "tokens=2 delims==." %%a in ('wmic FSDIR "%mydir:\=\\%" get InstallDate /value^|find "="') do set CreateTime=%%a
set CreateDate=%CreateTime:~0,8%

set /a aa=%CreateTime:~8,2%*60
set bb=%CreateTime:~10,2%

if "%CreateTime:~10,1%"=="0" (set /a CreateTime=%CreateTime:~8,2%*60+%CreateTime:~11,1%
) else (set /a CreateTime=%CreateTime:~8,2%*60+%CreateTime:~10,2%)


set SystemDate=%date:~0,4%%date:~5,2%%date:~8,2%
if "%time:~3,1%"=="0" (set /a SystemTime=%time:~0,2%*60+%time:~4,1%
) else (set /a SystemTime=%time:~0,2%*60+%time:~3,2%)
set /a num=%SystemTime%-%CreateTime%

if %CreateDate% equ %SystemDate% (
if %num% lss 60 (
start \\10.100.0.245\中自庆安共享盘\公共\Foxmail邮箱操作指南.html) 
)

"TIMEOUT /T 20"为延时20秒钟,组策略如果不延时的话,无法正常运行程序

补充

我这里做的判断比较简单,没有只针对小时和分钟的变量进行计算,没有把年月天考虑进去(只要时间跨天了就不能生效)如果对时间要求比较高的,可以对“CreateTime”进行重新截取计算,因DOS的特殊只能计算长度9位以下的数字

>echo %CreateTime%
20181101191238

>set SystemTime=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
>echo %SystemTime%
20190709105504

上面为完整时间字符串


本人的经验分享,希望可以帮助到你们,如何不对的地方,可以评论留言,帮我指正一下,如果帮助了你,请给我点个赞吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值