无法删除一部分字符串批处理

时间:2016-02-18 12:34:55

标签: 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:\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=%

我无法弄清楚出了什么问题。

1 个答案:

答案 0 :(得分:1)

您最好使用||@echo off Set "MyProcess=test1.exe" tasklist | find /i "%MyProcess%">nul && echo %MyProcess% Is running || start "" "X:\X\test1.exe" >nul 运算符执行此操作:

/i

来自this post

只是回答(部分)你的问题:

if参数必须直接放在IF /i NOT "%isRunning:INFO=%"=="%isRunning%" (start X:\X\test1.exe >nul 2>nul) 语句之后。

在测试变量之间放置双引号可避免在字符串为空时出错:

BLOCK_t blocks[BLOCKS_NEEDED];