简而言之,我有一个批处理脚本,它创建一个目录的文本文件,然后该脚本在目录中搜索一个文件。如果文件关闭,如果文件不存在则运行安装程序。
我的脚本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。
答案 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
:"关闭命令重复以下行,也不要做这条线")