是否可以从批处理文件中获取任务调度程序任务的名称 运行 批处理文件?
Is it possible, from within a batch file, to get the name of the task scheduler task running the batch file?
在 Windows 10 环境中,如果我无法访问正在执行我的 bat 文件的任务调度程序,我能否(从批处理文件中)知道具有启动批处理文件?是否有一个变量设置了我可以使用的任务计划程序任务名称?
显而易见的解决方案是在调用任务调度程序中的操作时添加任务名称参数,但是如果我无法访问任务调度程序怎么办?
我希望这个解决方案对你有用。
您可以在下面找到:
一个 .BAT 文件和一个包含函数的 .VBS。
至于.BAT:
@ECHO OFF
SET DT=%DATE% %TIME%
SET DATETIME=%DT:~0,19%
FOR /F "usebackq tokens=*" %%r in (`CSCRIPT "C:\<your_folder>\current_task_name.vbs" "%~dpnx0" "%DATETIME%"`) DO SET current_task_name=%%r
ECHO script was executed by: %current_task_name%
PAUSE
至于命名的VBS:current_task_name.vbs
getMyTask WScript.Arguments.Item(0), WScript.Arguments.Item(1)
Function getMyTask(Cmd, StartDateTime)
' ----------------------------------------------------------------------
' Script to list all Scheduled tasks and their available properties
' Written for TaskSchedule 2.0
' ----------------------------------------------------------------------
Dim objTaskService, objTaskFolder, colTasks
Dim objTask
' Create the TaskobjTaskService object and connect
Set objTaskService = CreateObject("Schedule.Service")
Call objTaskService.Connect
' Get the task folder that contains the tasks.
Set objTaskFolder = objTaskService.GetFolder("\")
' Get all of the tasks (Enumeration of 0 Shows all including Hidden. 1 will not show hidden)
Set colTasks = objTaskFolder.GetTasks(0)
If colTasks.Count = 0 Then
wscript.echo "No registered tasks."
Else
For Each objTask In colTasks
With objTask
'check if the time of execution is in the same range of the current task (~ 2 secs. after)
If DateDiff("s", .LastRunTime, StartDateTime) <= 2 Then
Set objTaskDefinition = .Definition
With objTaskDefinition
Set colActions = objTaskDefinition.Actions
For Each objTaskAction In colActions
With objTaskAction
Select Case .Type
Case 0 '= Execute / Command Line Operation
'If .Path of TaskAction object is equal to the batch file name provided
'it returns its task name back
If .Path = Cmd Then
wscript.echo objTask.Name
wscript.quit
End If
End Select
End With
Next
End With
End If
End With
Next
End If
End Function
此致,
jtandrea
在 Windows 10 环境中,如果我无法访问正在执行我的 bat 文件的任务调度程序,我能否(从批处理文件中)知道具有启动批处理文件?是否有一个变量设置了我可以使用的任务计划程序任务名称?
显而易见的解决方案是在调用任务调度程序中的操作时添加任务名称参数,但是如果我无法访问任务调度程序怎么办?
我希望这个解决方案对你有用。
您可以在下面找到:
一个 .BAT 文件和一个包含函数的 .VBS。
至于.BAT:
@ECHO OFF
SET DT=%DATE% %TIME%
SET DATETIME=%DT:~0,19%
FOR /F "usebackq tokens=*" %%r in (`CSCRIPT "C:\<your_folder>\current_task_name.vbs" "%~dpnx0" "%DATETIME%"`) DO SET current_task_name=%%r
ECHO script was executed by: %current_task_name%
PAUSE
至于命名的VBS:current_task_name.vbs
getMyTask WScript.Arguments.Item(0), WScript.Arguments.Item(1)
Function getMyTask(Cmd, StartDateTime)
' ----------------------------------------------------------------------
' Script to list all Scheduled tasks and their available properties
' Written for TaskSchedule 2.0
' ----------------------------------------------------------------------
Dim objTaskService, objTaskFolder, colTasks
Dim objTask
' Create the TaskobjTaskService object and connect
Set objTaskService = CreateObject("Schedule.Service")
Call objTaskService.Connect
' Get the task folder that contains the tasks.
Set objTaskFolder = objTaskService.GetFolder("\")
' Get all of the tasks (Enumeration of 0 Shows all including Hidden. 1 will not show hidden)
Set colTasks = objTaskFolder.GetTasks(0)
If colTasks.Count = 0 Then
wscript.echo "No registered tasks."
Else
For Each objTask In colTasks
With objTask
'check if the time of execution is in the same range of the current task (~ 2 secs. after)
If DateDiff("s", .LastRunTime, StartDateTime) <= 2 Then
Set objTaskDefinition = .Definition
With objTaskDefinition
Set colActions = objTaskDefinition.Actions
For Each objTaskAction In colActions
With objTaskAction
Select Case .Type
Case 0 '= Execute / Command Line Operation
'If .Path of TaskAction object is equal to the batch file name provided
'it returns its task name back
If .Path = Cmd Then
wscript.echo objTask.Name
wscript.quit
End If
End Select
End With
Next
End With
End If
End With
Next
End If
End Function
此致, jtandrea