【发布时间】:2017-05-05 05:17:30
【问题描述】:
我正在尝试从批处理文件中:
捕获 Windows 10 x64 中所有计划任务的任务名称和启用/禁用状态
-
将这些导出到第二个批处理文件,并在每个任务的以下命令中填充 TASKNAME 和 SCHEDULED_TASK_STATE:
schtasks /Change /TN "\TASKNAME" /SCHEDULED_TASK_STATE
这个想法是让第二个批处理文件用作所有现有任务的启用/禁用状态的一键备份/恢复。这样,通过 GUI 工具(例如,任务计划程序、自动运行、taskschedulerview-x64 等)选择性地启用/禁用任务的繁琐过程可以轻松撤消(或重做)。
对于源批处理文件,命令
SCHTASKS /Query /FO LIST /v
... 将检索所有任务的列表以及我感兴趣的两个值——“TaskName”和“Scheduled Task State”。
根据从其他 stackoverflow-ers 收集的信息,以下是我使用临时文件方法所获得的信息,但它只完成了一半,我在我的头上:)
echo
:: Get list and parameters of all tasks; find values for TaskName; save values to temp file 1
SCHTASKS /Query /FO LIST /v| findstr /r /C:"TaskName: " >"%USERPROFILE%\Desktop\1-SCHTASKS_LIST_QUERY_NAMES.TXT"
:: Re-get list and parameters of all tasks; find values for Scheduled Task State; save values to temp file 2
SCHTASKS /Query /FO LIST /v| findstr /r /C:"Scheduled Task State: " >"%USERPROFILE%\Desktop\2-SCHTASKS_LIST_QUERY_STATES.TXT"
:: Set delimiter/assign variable to TaskName values in temp file 1; populate schtasks/change command with value; (missing steps to get/populate task state); save to target batch file
for /f "tokens=2 delims=: " %%n in (%USERPROFILE%\Desktop\1-SCHTASKS_LIST_QUERY_NAMES.TXT) do @echo schtasks /Change /TN "%%n">>"%USERPROFILE%\Desktop\BACKUPS\BACKEDUP_scheduled_tasks_state.bat"
pause
而不是上面的,我更喜欢源批处理文件:
执行命令SCHTASKS /Query /FO LIST /v
-
是否所有处理/解析就地,即,将变量分配给每个任务所需的两个值 - 'TaskName' 和 'Scheduled Task State' - 而不创建临时文件,并且
将这些值插入到所有任务的 'schtasks /Change' 命令中并导出到目标批处理文件。
任何帮助将不胜感激。
【问题讨论】:
标签: powershell batch-file cmd scheduled-tasks backup