Board logo

标题: [系统相关] 【已解决】计划任务执行bat文件问题 [打印本页]

作者: qin_xs    时间: 2017-8-27 23:56     标题: 【已解决】计划任务执行bat文件问题

本帖最后由 qin_xs 于 2017-8-29 21:31 编辑

写了个BAT  运用winrar来备份Firefox到d:\Tools\Firefox.rar
然后用windows的定时任务来跳这个bat
bat文件我手动执行没问题   但放到定时任务里   就有问题
具体为:任务栏的Firefox程序关闭了  进程里却没关掉 也就不能重新启动firefox了(压缩是执行了的)
还有个 我把定时任务切换到登录用户 bat也不能前台执行



====== start ======
  1. @echo off
  2. title 备份Firefox
  3. echo.
  4. del /f /s /q /a d:\Tools\Firefox.rar
  5. tasklist|find /i "plugin-container.exe"
  6. if %ERRORLEVEL% == 0 taskkill /f /im "plugin-container.exe"
  7. tasklist|find /i "Firefox.exe"
  8. set err=%ERRORLEVEL%
  9. if %err% == 0 goto stopbakstart
  10. if %err% == 1 goto bakfirefox
  11. :stopbakstart
  12. taskkill /f /im "Firefox.exe"
  13. goto bakfirefox
  14. :bakfirefox
  15. rem 指定WINRAR路径并设置加密
  16. set WinRAR="D:\Program Files\WinRAR\rar.exe"
  17. set Psw=123456
  18. echo.
  19. echo 正在备份Firefox......
  20. echo.
  21. %WinRAR% a -p%Psw% -r -s -k -ibck -inul -x"*\Crash Reports" -x"*\Crash Reports\*" -ep1 D:\Tools\Firefox.rar %AppData%\Mozilla\Firefox
  22. rem -ag :当创建压缩文件时,以格式“YYYYMMDDHHMMSS”附加当前日期字符串,文件名YYYYMMDDHHMMSS.rar;
  23. rem -p :加密压缩文件;
  24. rem -k :锁定压缩文件;
  25. rem -s :创建固实压缩文件;
  26. rem -ibck :后台运行;
  27. rem d:\自动备份OA\MYOA.rar :备份的路径和基本名称(-ag参数会自动在bak后加上系统当前时间);
  28. rem d:\MYOA\ :要备份的文件目录;T
  29. echo.
  30. echo 备份完成
  31. if %err% == 0 goto start
  32. exit
  33. @echo off
  34. ::演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件。
  35. ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
  36. ::本例需要Win2003/Vista/Win7系统自带的forfiles命令的支持
  37. :start
  38. cd /D "D:\Program Files (x86)\Mozilla Firefox"
  39. start firefox.exe
  40. rem -------------------粘贴以上,保存为BAT文件,文件名备份Firefox.bat,放到D:\Tools\.softconfig
  41. rem [有问题]Schtasks /create /tn 备份Firefox /tr "D:\Tools\.softconfig\备份Firefox.bat" /sc weekly /D SUN /st 23:00 /ru system
  42. rem sc config Schedule start= AUTO
  43. rem sc start ScheduleTO
  44. rem at 23:00 /every:Su D:\Tools\.softconfig\备份Firefox.bat
  45. rem --------粘贴生成生成系统计划任务
复制代码
====== end ======
作者: Batcher    时间: 2017-8-28 09:20

  1. tasklist|find /i "plugin-container.exe"
  2. if %ERRORLEVEL% == 0 taskkill /f /im "plugin-container.exe"
  3. tasklist|find /i "Firefox.exe"
  4. set err=%ERRORLEVEL%
  5. if %err% == 0 goto stopbakstart
  6. if %err% == 1 goto bakfirefox
  7. :stopbakstart
  8. taskkill /f /im "Firefox.exe"
  9. goto bakfirefox
复制代码
感觉这里的逻辑判断意识不是很大,不管三七二十一,直接杀进程:
  1. taskkill /f /im "firefox.exe" /im "plugin-container.exe"
复制代码

作者: qin_xs    时间: 2017-8-28 13:40

回复 2# Batcher


    这儿是记录当前是否开着Firefox程序的,如果开着,后面要重启

我的问题主要是:
1 任务栏的Firefox程序关闭了  进程里却没关掉 也就不能重新启动firefox了(压缩是执行了的)
2 还有个 我把定时任务切换到登录用户 bat也不能前台执行

定时任务执行就才有这两个问题,我直接指定该批处理  是正常的
作者: PS2.0    时间: 2017-8-28 13:47

test.bat文件只保留这一句内容:
  1. taskkill /f /im "plugin-container.exe" /im "firefox.exe"
复制代码
如果 schtasks 不用这个命令,用任务计划向导图形界面创建的任务计划能杀掉进程吗?
当前用户是 Administrator 吗?
作者: Batcher    时间: 2017-8-28 13:50

回复 3# qin_xs


我的意思主要是想说,没有必要“记录当前是否开着Firefox程序的”。
管它开没开,先用 taskkill 杀一杀再说,反正后面都要 start 嘛。
作者: qin_xs    时间: 2017-8-29 20:50

本帖最后由 qin_xs 于 2017-8-29 21:03 编辑

回复 4# PS2.0


    经测试  应该是用户的问题

之前进程中有firefox  我以为是没关掉  实际上启动了

但用户这个问题处理不了  不是administrator 我手动创建定时任务也不行

用户确认是对了的
命令行打开Firefox进程的用户和手动开启的用户也是一样的   但任务栏没程序

===========================

cd /D "D:\Program Files (x86)\Mozilla Firefox"
start firefox.exe

bat文件只保留这一句  手动执行bat可以  用定时任务就不行
作者: qin_xs    时间: 2017-8-29 20:51

回复 5# Batcher


    开始firefox启动了   后来重新启动
    如果开始没启动   就不需启动了
所以加了这个判断
作者: Batcher    时间: 2017-8-29 21:13

回复 7# qin_xs


明白你想表达的意思了。
但是从顶楼的代码来看,无论怎样都会执行到 :bakfirefox 然后再执行到 :start
那个代码应该无法实现“如果开始没启动   就不需启动了”
逻辑判断跳转的地方需要修改。
作者: PS2.0    时间: 2017-8-29 21:18

回复 6# qin_xs


    用 at 命令的 /interactive 创建的任务计划可以吗?
作者: qin_xs    时间: 2017-8-29 21:29

回复 9# PS2.0


    at不得行。
定时任务切换到administrators(管理员组)后   可以了

感谢帮助
作者: qin_xs    时间: 2017-8-29 21:31

回复 5# Batcher


    前面加了 exit的
很少写这个  写出来的东西逻辑性和可读性差




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