Board logo

标题: [文本处理] 求助批处理改xml文件后报错,生成一个开机运行的任务计划 [打印本页]

作者: svke    时间: 2022-8-17 12:42     标题: 求助批处理改xml文件后报错,生成一个开机运行的任务计划

  1. @echo off
  2. copy %~dp0office.bat c:\windows /y
  3. copy %~dp0release.bat c:\windows /y
  4. md c:\tmp
  5. rem 下面这一行是启动后运行
  6. schtasks /create /f /tn release /tr c:\windows\release.bat /sc onstart
  7. :: 修改计划任务程序,由于中文导出报错,所以提前设置活动代码页编号437 MS-DOS 美国英语
  8. chcp 437
  9. ::开始导出名字为release的任务计划程序
  10. schtasks.exe /query /xml /tn release > c:\tmp\release.xml
  11. pause
  12. goto modifyAgent
  13. :modifyAgent
  14. rem 其实下面的代码就是要往xml文修的里添加这一行 <WorkingDirectory>c:\windows\</WorkingDirectory>
  15. rem 下面的代码实现了这个功能可是重新导入时就报错了:'(
  16. ::如下的修改操作主要是修改xml添加run directory,其中str1就是要添加的内容,添加在带有"Command"字符串行的后面一行
  17. set "DirPath=c:\windows\"
  18. cd /D %DirPath%
  19. set "str1=^<WorkingDirectory^>%cd%\^<^/WorkingDirectory^>"
  20. for /f %%i in ('type c:\tmp\release.xml') do (
  21. echo %%i>>c:\tmp\release.xml
  22. echo "%%i"|findstr "<Command>" >nul&&echo %str1%>>c:\tmp\release.xml)
  23. goto import
  24. ::修改完成后就可以覆盖导入了
  25. :import
  26. rem 这里release.xml文件修改完报错:错误:text/xmldec1 不在输入的开始位置success
  27. schtasks.exe /create /tn release /xml c:\tmp\release.xml /f
  28. rem 下面这一行是每3分钟运行一次
  29. schtasks /create /f /sc minute /mo 3 /tn "office" /tr c:\windows\office.bat
  30. pause
  31. exit
复制代码

作者: svke    时间: 2022-8-17 12:45

我想实现的功能是用命令行生成一个开机运行的任务计划,可是用命令生成的任务计划没有起始于这个参数就是这个start -in
作者: flashercs    时间: 2022-8-17 13:32

有 起始时间和终止时间的参数:
起始时间:
  1. /sd
复制代码

作者: svke    时间: 2022-8-17 13:36

本帖最后由 svke 于 2022-8-17 13:41 编辑

回复 3# flashercs


    大神我是新手还是没有明白,这个起始时间sd在哪里设置的 你说是schtasks /create /sd /ed这个参数吗
作者: flashercs    时间: 2022-8-17 14:04

  1. @echo off
  2. copy %~dp0office.bat c:\windows /y
  3. copy %~dp0release.bat c:\windows /y
  4. md c:\tmp
  5. rem 下面这一行是启动后运行
  6. schtasks /create /f /tn release /tr c:\windows\release.bat /sc onstart
  7. :: 修改计划任务程序,由于中文导出报错,所以提前设置活动代码页编号437 MS-DOS 美国英语
  8. chcp 437
  9. ::开始导出名字为release的任务计划程序
  10. schtasks.exe /query /xml /tn release > c:\tmp\release.xml
  11. pause
  12. goto modifyAgent
  13. :modifyAgent
  14. rem 其实下面的代码就是要往xml文修的里添加这一行 <WorkingDirectory>c:\windows\</WorkingDirectory>
  15. rem 下面的代码实现了这个功能可是重新导入时就报错了:'(
  16. ::如下的修改操作主要是修改xml添加run directory,其中str1就是要添加的内容,添加在带有"Command"字符串行的后面一行
  17. set "DirPath=c:\windows\"
  18. cd /D %DirPath%
  19. powershell -c "(gc -LiteralPath 'c:\tmp\release.xml' -ReadCount 0)|foreach{$_;if($_ -match '<Command>'){'<WorkingDirectory>'+[environment]::CurrentDirectory+'</WorkingDirectory>'}}|sc -literalpath 'c:\tmp\release.xml' -encoding unicode"
  20. goto import
  21. ::修改完成后就可以覆盖导入了
  22. :import
  23. rem 这里release.xml文件修改完报错:错误:text/xmldec1 不在输入的开始位置success
  24. schtasks.exe /create /tn release /xml c:\tmp\release.xml /f
  25. rem 下面这一行是每3分钟运行一次
  26. schtasks /create /f /sc minute /mo 3 /tn "office" /tr c:\windows\office.bat
  27. pause
  28. exit
复制代码

作者: svke    时间: 2022-8-17 14:30

回复 5# flashercs


    老大威武,好用了,谢谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2