我创建了一个批处理文件来运行test
并运行test1
(如果它尚未运行)
但是当我运行它时
@echo off
start test.exe >nul 2>nul
tasklist /fi "IMAGENAME eq test1.exe">tmp.t
set /p "isRunning=<tmp.t"
%isRunning%>test1.txt
pause
IF NOT /i %isRunning:INFO=%==%isRunning% (start X:\X\test1.exe >nul 2>nul)
timeout 10
del tmp.t
它说
'INFO:' Is not regonized as an internal or external command,operable program
or batch file
然后
:was unexpected at the time
test1.txt也是空的。此行IF NOT /i %isRunning:~INFO=%==%isRunning%
用于检查进程是否正在运行。它似乎
像字符串替换一样,它的工作方式不应该%isRunning:INFO=%
我无法弄清楚出了什么问题。
答案 0 :(得分:1)
您最好使用||
和@echo off
Set "MyProcess=test1.exe"
tasklist | find /i "%MyProcess%">nul && echo %MyProcess% Is running || start "" "X:\X\test1.exe" >nul
运算符执行此操作:
/i
只是回答(部分)你的问题:
if
参数必须直接放在IF /i NOT "%isRunning:INFO=%"=="%isRunning%" (start X:\X\test1.exe >nul 2>nul)
语句之后。
在测试变量之间放置双引号可避免在字符串为空时出错:
BLOCK_t blocks[BLOCKS_NEEDED];