找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17841|回复: 5

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

[复制链接]
发表于 2022-8-17 12:42:57 | 显示全部楼层 |阅读模式
  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
复制代码
 楼主| 发表于 2022-8-17 12:45:27 | 显示全部楼层
我想实现的功能是用命令行生成一个开机运行的任务计划,可是用命令生成的任务计划没有起始于这个参数就是这个start -in
发表于 2022-8-17 13:32:47 | 显示全部楼层
有 起始时间和终止时间的参数:
起始时间:
  1. /sd
复制代码
 楼主| 发表于 2022-8-17 13:36:39 | 显示全部楼层
本帖最后由 svke 于 2022-8-17 13:41 编辑

回复 3# flashercs


    大神我是新手还是没有明白,这个起始时间sd在哪里设置的 你说是schtasks /create /sd /ed这个参数吗
发表于 2022-8-17 14:04:19 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2022-8-17 14:30:10 | 显示全部楼层
回复 5# flashercs


    老大威武,好用了,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 17:17 , Processed in 0.010831 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表