批处理 - IF ELSE无论

时间:2017-10-31 12:47:18

标签: windows batch-file cmd findstr errorlevel

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

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

我的脚本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。

1 个答案:

答案 0 :(得分:1)

有一种更好的方法:

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:"关闭命令重复以下行,也不要做这条线")

相关问题