标题: [文件操作] [已解决]批处理监测指定程序是否在运行的代码查错及修改 [打印本页]
作者: mokio 时间: 2016-8-14 05:15 标题: [已解决]批处理监测指定程序是否在运行的代码查错及修改
本帖最后由 mokio 于 2016-8-15 10:10 编辑
我有如下代码,请教下,如何在启动程序后在后面写上启动的时间。现执行会出错[对 SETLOCAL 命令来说参数是无效的。
],请教如何修改此脚本,代码意义如下。谢谢!
输入参数
检测参数p是否为1或2
运行1.py 2.py 1.exe
检测1.exe是否存在
不存在,重新运行1.py 2.py 1.exe- @Echo Off
- setlocal eidabledelayedexpaidsioid
- color E
- :start
- cd C:\Users\Administrator
- set /p id=房间号:
- set /p m=单线数量:
- set /p p=模式:
- cls
- if "%id%"=="q" goto quit
- echo %p%|findstr /i "[1-2]">nul && goto go
- cls
- echo ==============
- echo 请输入正确模式!
- echo ==============
- echo.
- echo.
- echo 按任意键重新输入......
- pause>nul
- goto start
- :go
- start cmd /c 1.py
- start cmd /c 2.py
- ping /n 3 127.1>nul
- start "1x!m!-!id!" /low /miid cmd /c 1.exe -c !id! -t !m! -p !p!.txt -r 50
- echo ==============
- echo 代理已更新
- echo 主程序正在以最小化运行 《《———在这里加上程序启动时的时间
- echo ==============
- goto loop
- :loop
- TASKLIST|findstr /bc:"1.exe" ||
- echo ==============
- echo 检测到程序关闭 正在重启程序
- echo ==============
- goto go
- :quit
- exit
复制代码
作者: mokio 时间: 2016-8-14 12:04
感谢修改标题(。・ω・。)ノ♡
作者: Batcher 时间: 2016-8-14 13:45
- setlocal enabledelayedexpansion
复制代码
- echo 主程序正在以最小化运行 %date% %time%
复制代码
作者: pcl_test 时间: 2016-8-14 13:46
本帖最后由 pcl_test 于 2016-8-14 14:00 编辑
rem setlocal enabledelayedexpansion //并不需要开延迟,对应1.exe的参数无需用!!延迟扩展
……
:start
cls
……
if /i "%id%"=="q" goto quit
echo,%p%|findstr "^[12]$">nul&&goto go
……
start "1x%m%-%id%" /low /min cmd /c 1.exe -c %id% -t %m% -p %p%.txt -r 50
……
echo 主程序正在以最小化运行 %date%%time%
……
:loop
>nul ping -n 2 0
TASKLIST|find "1.exe">nul&&goto loop||(
echo ==============
echo 检测到程序关闭 正在重启程序
echo ==============
)
goto go
作者: mokio 时间: 2016-8-14 15:31
本帖最后由 mokio 于 2016-8-15 09:33 编辑
回复 4# pcl_test
谢谢版主的回复!代码成功运行了!!
但是现在遇到了新问题
在运行2.py的时候是会生成一个2.txt文件 但是他有时候不太稳定 如果2.txt文件大小小于5kb的话是不正常的
可否在运行2.py后 1.exe前 加一个“2.txt是否小于5k b”
如果是,则重新运行2.py
如果不是,就继续运行1.exe
如果可以的话,再生成一个日志。把显示的话生成一个日志文件
刚才自己有试着加了下参考了如下代码 一脸懵逼 不知道怎么加进去- /*&cls
- @echo off
- set "file=C:\1.ini"
- cscript -nologo -e:jscript "%~f0" "%file%"|find /i "Y">nul&&echo;执行A操作||echo;执行B操作
- pause&exit
- */
- var n = 50, fso = new ActiveXObject('Scripting.Filesystemobject');
- if(fso.GetFile(WSH.Arguments(0)).Size > n)WSH.echo('Y')
复制代码
作者: Batcher 时间: 2016-8-15 20:49
回复 5# mokio
BAT的for命令本身可以获取文件大小,没有必要调用JS代码。- @echo off
- for %%i in ("2.txt") do (
- if %%~zi lss 5210 (
- echo 重新运行2.py
- ) else (
- echo 继续运行1.exe
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |