查找变量值时,批处理返回“ ECHO IS OFF”

时间:2019-09-09 00:36:34

标签: batch-file

因此,我创建了一个脚本来检查某些文件夹/文件路径,这样做很好,在检查是否找到文件夹的过程中,它将变量的值更改为“ found”。如果找不到该文件夹​​,它将值保留为默认的“ NA”。但是,返回显示值的菜单时,返回的只是“ ECHO IS OFF”。首先,我尝试将它们保存到日志文件中,但是它拒绝保存它们。我猜这也使我无法查看这些值。

我已经尝试添加“ IF NOT”以确保它没有碰到丢失的文件夹,然后拒绝设置值,但这就是我能想到的。

这是一段代码。

在检查期间:

IF EXIST System\SystemCore set SC= Found
IF EXIST System\SystemCore\4BIOS set SC4B= Found
IF EXIST System\SystemCore\4BIOS\Default set SC4BD= Found
goto :DCV

之后,显示值的菜单:

:DCV
echo %SC%
echo %SC4B%
echo %SC4BD%
echo %SC4BB%
echo %SC4BOK%
echo %SCCAGOL%
echo %SCCAGOLG%
echo %SCCAE%
echo %SSST%
echo %CLB%
echo %ITC%
echo %SSSTF%
echo %UPF%
echo %SUU%
echo %UUTF%

我进入了这个,不希望出现任何错误,但是到了。 没有诸如“系统找不到...等”之类的错误

3 个答案:

答案 0 :(得分:1)

如果您想回显任何内容,包括空行,则可以添加“。”。在echo命令和变量之间,例如:

echo.%SC%
echo.%SC4B%
echo.%SC4BD%
echo.%SC4BB%
echo.%SC4BOK%
echo.%SCCAGOL%
echo.%SCCAGOLG%
echo.%SCCAE%
echo.%SSST%
echo.%CLB%
echo.%ITC%
echo.%SSSTF%
echo.%UPF%
echo.%SUU%
echo.%UUTF%

答案 1 :(得分:1)

即使不讨论代码中的空白之类的其他因素,您也可以简单地恢复为if defined来测试变量是否具有值,并且只有在这样做的情况下,echo才能执行此示例在每个变量的for循环中。

@echo off
setlocal enabledelayedexpansion
for %%i in (SC SC4B SC4BD SC4BB SC4BOK SCCAGOL SCCAGOLG SCCAE SSST CLB ITC SSSTF UPF SUU UUTF) do if defined %%i echo !%%i!

答案 2 :(得分:0)

事实证明,在测试过程中,我是从本身启动integcheck.bat的,并给出了由OS4或4BIOS调用所需的完整目录路径,从任何一个调用之后,它都能正常工作。尽管某些值确实返回了ECHO IS OFF,但我认为这是因为它正在检查同一目录,只是前面的一个路径。

我从错误中学到了东西。

要解决此问题,请按此顺序致电; OS4-> 4BIOS->集成检查 假设正确设置了所有文件路径,并且将值预定义为NA,一切正常。