标题: [系统相关] 【已解决】计划任务执行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 ======- @echo off
- title 备份Firefox
- echo.
- del /f /s /q /a d:\Tools\Firefox.rar
- tasklist|find /i "plugin-container.exe"
- if %ERRORLEVEL% == 0 taskkill /f /im "plugin-container.exe"
- tasklist|find /i "Firefox.exe"
- set err=%ERRORLEVEL%
- if %err% == 0 goto stopbakstart
- if %err% == 1 goto bakfirefox
- :stopbakstart
- taskkill /f /im "Firefox.exe"
- goto bakfirefox
-
- :bakfirefox
- rem 指定WINRAR路径并设置加密
- set WinRAR="D:\Program Files\WinRAR\rar.exe"
- set Psw=123456
- echo.
- echo 正在备份Firefox......
- echo.
- %WinRAR% a -p%Psw% -r -s -k -ibck -inul -x"*\Crash Reports" -x"*\Crash Reports\*" -ep1 D:\Tools\Firefox.rar %AppData%\Mozilla\Firefox
- rem -ag :当创建压缩文件时,以格式“YYYYMMDDHHMMSS”附加当前日期字符串,文件名YYYYMMDDHHMMSS.rar;
- rem -p :加密压缩文件;
- rem -k :锁定压缩文件;
- rem -s :创建固实压缩文件;
- rem -ibck :后台运行;
- rem d:\自动备份OA\MYOA.rar :备份的路径和基本名称(-ag参数会自动在bak后加上系统当前时间);
- rem d:\MYOA\ :要备份的文件目录;T
-
- echo.
- echo 备份完成
- if %err% == 0 goto start
- exit
- @echo off
- ::演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件。
- ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
- ::本例需要Win2003/Vista/Win7系统自带的forfiles命令的支持
- :start
- cd /D "D:\Program Files (x86)\Mozilla Firefox"
- start firefox.exe
-
- rem -------------------粘贴以上,保存为BAT文件,文件名备份Firefox.bat,放到D:\Tools\.softconfig
-
- rem [有问题]Schtasks /create /tn 备份Firefox /tr "D:\Tools\.softconfig\备份Firefox.bat" /sc weekly /D SUN /st 23:00 /ru system
- rem sc config Schedule start= AUTO
- rem sc start ScheduleTO
- rem at 23:00 /every:Su D:\Tools\.softconfig\备份Firefox.bat
-
- rem --------粘贴生成生成系统计划任务
复制代码
====== end ======
作者: Batcher 时间: 2017-8-28 09:20
- tasklist|find /i "plugin-container.exe"
- if %ERRORLEVEL% == 0 taskkill /f /im "plugin-container.exe"
- tasklist|find /i "Firefox.exe"
- set err=%ERRORLEVEL%
- if %err% == 0 goto stopbakstart
- if %err% == 1 goto bakfirefox
- :stopbakstart
- taskkill /f /im "Firefox.exe"
- goto bakfirefox
复制代码
感觉这里的逻辑判断意识不是很大,不管三七二十一,直接杀进程:- 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文件只保留这一句内容:- 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 |