批处理 - 启动函数的 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")
如果这里有帖子可以回答我的问题,请提前致歉,自周五以来我一直坚持这个问题并四处寻找。我确实发现了一些类似的问题,但 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")