Batch file Can';t删除字符串批处理的一部分
我创建了一个批处理文件来运行Batch file Can';t删除字符串批处理的一部分,batch-file,Batch File,我创建了一个批处理文件来运行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:
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
然后
此外,test1.txt仍为空。此行如果没有/i%isRunning:~INFO=%%==%isRunning%
用于检查进程是否正在运行。看来
like字符串替换没有按应有的方式工作%isRunning:INFO=%
我想不出哪里出了问题。您最好使用
&&
和|
运算符:
@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)
@echo off
Set "MyProcess=test1.exe"
tasklist | find /i "%MyProcess%">nul && echo %MyProcess% Is running || start "" "X:\X\test1.exe" >nul
IF /i NOT "%isRunning:INFO=%"=="%isRunning%" (start X:\X\test1.exe >nul 2>nul)