向 Windows 批处理脚本向导请求一些魔法......:D
出于比赛目的,我的团队成员使用BoincTasks在完成 99% 时自动暂停 Boinc 工作单元,因此他们可以在开始日期后恢复它们,从而在短时间内发送大量结果。不幸的是,BoincTasks 可以自动挂起任务,但不能自动恢复它们。所以:如果用户不能在某个日期/时间留在计算机前手动恢复任务,最好有一个 Windows 批处理脚本能够完成这项工作,由 Windows 调度程序触发。
Boinc 使用(假).XML 文件来跟踪他管理的任何任务。通常,您会在此处找到它:C:\ProgramData\BOINC\client_state.xml
这是其中有趣的部分(完整文件为 368k):
<active_task>
<project_master_url>http://asteroidsathome.net/boinc/</project_master_url>
<result_name>ps_170405_input_161867_8_1</result_name>
<active_task_state>1</active_task_state>
...
</active_task>
每个任务都有一个“active_task”标签。暂停的任务将“active_task_state”子标签设置为“0”。
Boinc 有一个命令行可执行文件,可以恢复单个任务,假设您知道一些参数。这是一个例子:
boinccmd --task [project_master_url] [result_name] resume
所以,我想编写一个批处理脚本,能够从选定的“project_master_url”恢复挂起的任务。这是理想的场景:我想从“asteroidsathome”Boinc 项目中恢复所有任务(参见上面代码中的 url)。
- 打开并解析 "C:\ProgramData\BOINC\client_state.xml" ;
"project_master_url"=="the project url"
找到所有具有AND的“active_task”分支"active_task_state"==0
;- 对于每个任务,执行命令行,如上所述。
我很习惯 Linux .sh 和 PHP 脚本,但我只是不明白如何在 Windows 批处理中获得相同的结果。我已经找到了如何使用以下方法解析 XML:从批处理中解析 xml ......但是“过滤/将提取的数据扔到命令行”过程仍然是一个谜 :(
一些咒语可以施展吗?感谢:D