批处理 - 启动函数的 IF ELSE 条件不管怎样都会执行

Batch - IF ELSE Condition for start function executes regardless

如果这里有帖子可以回答我的问题,请提前致歉,自周五以来我一直坚持这个问题并四处寻找。我确实发现了一些类似的问题,但 none 我可以应用或适应这个(据我所知)。

简而言之,我有一个批处理脚本,它创建一个目录的文本文件,然后该脚本在该目录中搜索一个文件。如果文件存在,它会关闭,如果文件不存在,它会运行安装程序。

我的脚本 atm 看起来像这样:

@echo off

dir "C:\SomeDirectory" > DIRECTORY.txt

timeout 5 >Nul 

findstr "SomeProgram.exe" DIRECTORY.txt 

if ErrorLevel = 0 (
    @echo Program Found! > SCN.txt
)
else (
    @echo Program Not Found! >SCN.txt
    start ahkbin.exe    
)   

我在 运行 这个时候遇到了两个问题。

(1) else 条件总是打印到指定的 .txt 文件,即使目录存在且 directory.txt 中的字符串也存在。如果我切换周围的条件,反之亦然。

(2) 无论"start ahkbin.exe"放在哪里,它都会执行。如果同时放在 IF 和 ELSE 中,它会执行两次。

我觉得我在构建 IF\ELSE 循环或我如何使用文本文件中的信息方面做的事情明显不正确,或者我只是错误地使用了批处理文件。

任何输入将不胜感激, 提前致谢, LMacs.

有更好的方法:

if exist "C:\SomeDirectory\SomeProgram.exe" (
  echo Program Found!> SCN.txt
) else (
    echo Program Not Found!>SCN.txt
    start ahkbin.exe    
)   

备注:
if - else 语法很挑剔:第一个 ( 必须与 if.
在同一物理行上 ) else ( 必须在同一条物理线路上。
空格是必填项。

命令是echo,不是@echo@ 只是抑制该行的命令重复。这里不需要,因为 echo off 完全关闭命令重复(批处理脚本的第一行通常是 @echo off: "turn off command repetition for following lines and also don't do it for this line")