Batch file 使用schtasks禁用所有任务

Batch file 使用schtasks禁用所有任务,batch-file,windows-task-scheduler,Batch File,Windows Task Scheduler,我需要执行一个批处理文件,该文件禁用所有任务,到目前为止,我得到了以下结果: @echo OFF for /f "tokens=2 delims=:" %%i in ('schtasks /Query /FO LIST ^| findstr "Nombre de tarea:"') do (call :subroutine "%%i") :subroutine set TASKNAME=%%i echo %TASKNAME%:%1 schtasks /change /tn=%TASKNAME

我需要执行一个批处理文件,该文件禁用所有任务,到目前为止,我得到了以下结果:

@echo OFF
for /f "tokens=2 delims=:" %%i  in ('schtasks /Query /FO LIST ^| findstr "Nombre de tarea:"') do (call :subroutine "%%i")

:subroutine
set TASKNAME=%%i
echo %TASKNAME%:%1
schtasks /change /tn=%TASKNAME%:%1 /disable
GOTO :eof
所以,我对grep很不满意,已经2年没有使用它了,这就是“findstr”所说的:

因此,每个任务有3行,而且我只需要tn属性的“任务名称”,而不是整个路径


有什么帮助/提示吗?谢谢。

如果要禁用所有任务,停止任务计划程序服务会不会更容易?

好的一点,但是如果要禁用它们,我建议将脚本放入vbs文件:

您可以使用以下代码列出所有任务:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colScheduledJobs = objWMIService.ExecQuery _
    ("Select * from Win32_ScheduledJob")
For Each objJob in colScheduledJobs
    Wscript.Echo "Caption: " & objJob.Caption
    Wscript.Echo "Command: " & objJob.Command
    Wscript.Echo "Days Of Month: " & objJob.DaysOfMonth
    Wscript.Echo "Days Of Week: " & objJob.DaysOfWeek
    Wscript.Echo "Description: " & objJob.Description
    Wscript.Echo "Elapsed Time: " & objJob.ElapsedTime
    Wscript.Echo "Install Date: " & objJob.InstallDate
    Wscript.Echo "Interact with Desktop: " & objJob.InteractWithDesktop
    Wscript.Echo "Job ID: " & objJob.JobID
    Wscript.Echo "Job Status: " & objJob.JobStatus
    Wscript.Echo "Name: " & objJob.Name
    Wscript.Echo "Notify: " & objJob.Notify
    Wscript.Echo "Owner: " & objJob.Owner
    Wscript.Echo "Priority: " & objJob.Priority
    Wscript.Echo "Run Repeatedly: " & objJob.RunRepeatedly
    Wscript.Echo "Start Time: " & objJob.StartTime
    Wscript.Echo "Status: " & objJob.Status
    Wscript.Echo "Time Submitted: " & objJob.TimeSubmitted
    Wscript.Echo "Until Time: " & objJob.UntilTime
Next

获取所有任务的名称,并为每个任务运行一个
schtasks/change/tn=%TASKNAME%:%1
/disable

for /f "tokens=1 delims=," %%a in (
    'schtasks /Query /FO csv ^| find /V "Task name" ^| find /V "Disabled"'
) do (
    schtasks /change /tn %%a /disable
)

注意:如果显示此命令的示例“
schtasks/Query/FO csv
”,我可以将该命令编辑到您的区域设置中

为什么要禁用这些任务?从命令行停止并启动任务计划服务。如果“服务-任务计划程序下载”中的“停止”变灰,请执行以下操作:

以管理员身份运行:

PSEXEC -i -s CMD 
在CMD窗口中:

net stop schedule
准备好后:

net start schedule

启用禁用所有计划任务启用禁用所有任务任务计划程序停止变灰

如果我可以使用vs或c,我会像你建议的那样使用Wscript,但我被命令只能通过普通批处理来实现,所以他们可以用简单的.bat来执行,谢谢你的建议。“Nombre de tarea”、“Hora próxima Ejeución”、“Estado”“\Microsoft\Windows\Time Synchronization\Synchronization Time”,“18/10/2015 1:00:00”,“Listo”我也在测试它,它不会被查找/V“启用”吗?它正在工作,只是必须以管理员身份运行它。谢谢Paul!
net start schedule