情况说明
想在用户首次登陆时,执行特定程序或文件,而只想执行一次
代码说明
- 获取用户创建时间
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
上面为完整时间字符串
本人的经验分享,希望可以帮助到你们,如何不对的地方,可以评论留言,帮我指正一下,如果帮助了你,请给我点个赞吧