用bat脚本创建一个以当前用户运行的计划任务
时间: 2024-11-03 11:21:29 浏览: 16
在Windows系统中,你可以使用批处理脚本来创建一个新的计划任务,并设置它以当前登录的用户身份运行。以下是步骤:
1. 打开命令提示符(管理员权限),因为创建计划任务需要管理权限。
2. 创建一个新的文本文件,例如`create_task.bat`,并用记事本或其他文本编辑器打开它。
3. 在这个文本文件中输入以下内容(假设你要创建的任务名为`MyTask`,每天下午2点运行`example_script.exe`):
```batch
@echo off
schtasks /Create /tn "MyTask" /tr "c:\path\to\your\example_script.exe" /sc daily /st 14:00 /ru %USERNAME%
```
这里,`/tr` 参数指定了要执行的程序路径,`/sc` 设置了任务调度频率(这里是每天一次),`/st` 定义了开始时间(24小时制,这里是下午2点),`/ru` 指定运行任务的用户名( `%USERNAME%` 表示当前登录用户的用户名)。
4. 保存并关闭文本文件。
5. 最后,在命令提示符中运行 `create_task.bat` 文件来创建计划任务,如:
```cmd
cd <文件夹路径> (替换为你保存脚本的实际路径)
create_task.bat
```
完成上述步骤后,你应该就成功地创建了一个由当前登录用户运行的计划任务。
相关问题
用bat脚本做一个任务计划:名称Logon,只在用户登陆时运行,触发器是工作站解锁时,操作是启动程序"%appdata%\Microsoft\123.exe,其他默认,执行脚本的用户没管理员权限
如果执行脚本的用户没有管理员权限,那么无法直接使用 `schtasks` 命令来创建和修改任务计划。但是,你可以使用 `powershell` 命令来创建和修改任务计划,因为它可以以管理员身份运行。
以下是一个将使用 `powershell` 命令来创建和修改任务计划的批处理脚本示例:
```batch
@echo off
set "taskName=Logon"
set "triggerType=Logon"
set "actionType=start"
set "programPath=%appdata%\Microsoft\123.exe"
REM 创建任务计划
powershell -Command "Register-ScheduledTask -TaskName '%taskName%' -Trigger (New-ScheduledTaskTrigger -AtLogOn) -Action (New-ScheduledTaskAction -Execute '%programPath%') -User '%USERNAME%' -RunLevel Highest"
REM 修改触发器为工作站解锁
powershell -Command "Set-ScheduledTask -TaskName '%taskName%' -Trigger (New-ScheduledTaskTrigger -AtLogOn) -User '%USERNAME%' -RunLevel Highest"
exit
```
请确保将 "%appdata%\Microsoft\123.exe" 替换为实际的程序路径,并确保该程序存在于该位置。
此批处理脚本将使用 `powershell` 命令来创建名为 "Logon" 的任务计划,并设置触发器为用户登录时触发。然后,它会修改任务计划的触发器为工作站解锁,并设置操作为启动指定的程序 "%appdata%\Microsoft\123.exe"。最后,它会以当前用户的权限运行。
请注意,虽然这种方法不需要管理员权限,但在某些情况下,可能需要管理员权限才能创建和修改任务计划。如果你没有管理员权限,可能需要联系系统管理员来帮助你创建和修改任务计划。
bat创建计划任务,设定名称为测试程序,设定每月10号执行一次,执行具体时间在当前时间后一个小时,对应的脚本是什么?
你可以创建一个名为 "测试程序.bat" 的批处理文件,并在其中编写以下代码:
```
schtasks /create /tn "测试程序" /tr "C:\path\to\your\program.exe" /sc monthly /d 10 /st (当前时间+1小时) /ru SYSTEM
```
其中,/tn 参数指定任务名称,/tr 参数指定要执行的程序(例如,C:\path\to\your\program.exe),/sc 参数指定计划任务的执行频率(这里是每月一次),/d 参数指定执行日期(这里是每月的10号),/st 参数指定执行时间(这里是当前时间后一个小时),/ru 参数指定以何种身份运行任务(这里是 SYSTEM 身份)。
请注意,在上述代码中,"(当前时间+1小时)" 是一个占位符,需要替换为实际的时间值,格式为 HH:MM。你可以使用以下命令获取当前时间并加上一个小时:
```
for /f "tokens=1-3 delims=: " %a in ("%time%") do set /a hours=%a+1 & set "time=%hours%:%b%:%c"
```
将上述命令中的 "%" 符号换为 "%%" 后,就可以将其作为批处理脚本中的变量使用。因此,你可以将上述命令嵌入到批处理脚本中,然后将其作为 /st 参数的值。
阅读全文