Batch file “批量退货”;“回声关闭”;当寻找变量值时
所以我创建了一个脚本来检查某些文件夹/文件路径,它做得很好,在检查是否找到文件夹的过程中,它将变量的值更改为“found”。如果找不到该文件夹,它会将该值保留为默认值“NA”。但是,当返回到显示值的菜单时,它返回的只是“ECHO is OFF”。首先,我尝试将它们保存到日志文件中,但它拒绝保存它们。我猜这也会阻止我查看这些值 我已经尝试过添加“IF NOT”以确保它不会命中丢失的文件夹,然后拒绝设置值,但这就是我所能想到的 下面是一段代码 检查期间:Batch file “批量退货”;“回声关闭”;当寻找变量值时,batch-file,Batch File,所以我创建了一个脚本来检查某些文件夹/文件路径,它做得很好,在检查是否找到文件夹的过程中,它将变量的值更改为“found”。如果找不到该文件夹,它会将该值保留为默认值“NA”。但是,当返回到显示值的菜单时,它返回的只是“ECHO is OFF”。首先,我尝试将它们保存到日志文件中,但它拒绝保存它们。我猜这也会阻止我查看这些值 我已经尝试过添加“IF NOT”以确保它不会命中丢失的文件夹,然后拒绝设置值,但这就是我所能想到的 下面是一段代码 检查期间: IF EXIST System\System
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%
我没有预料到会有任何错误,但我们到了。
没有错误,例如“系统找不到…等”如果要回显任何内容,包括可能的空行,可以在回显命令和变量之间添加“.”,如:
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%
即使不讨论代码中的空白等其他因素,您也可以简单地返回到
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!
结果证明,在测试过程中,我从自身启动integracheck.bat,并给出OS4或4BIOS调用integracheck.bat时所需的完整目录路径,在从其中任何一个调用后,它都能正常工作。虽然有些值确实返回
ECHO处于关闭状态
,但我假设这是因为它检查的是同一个目录,只是前面的一条路径
我从错误中吸取了教训
要解决此问题,请按此顺序调用;OS4->4BIOS->集成检查
假设所有文件路径都已正确设置,并且值已预定义为
NA
,则一切正常。如果输出中需要空格,则应将值括在引号中如果存在System\SystemCore set“SC=Found”
。您可能希望它类似于如果存在System\SystemCore set“SC=SC-Found”
它应该是这种语法,如果存在System\SystemCore\“set”SC=Found“
和echo=%SC%
。echo=
中的=
可以是许多字符中的一个,但通过测试发现(
、=
和/
比常用的
更健壮。此外,您已经声明,您已经使用NA
值预定义了所有这些变量,这意味着您要么没有正确执行,要么在同一个括号内的代码块中执行,而没有启用g延迟变量扩展。您能从设置这些变量的点发布代码吗?@Compo这些值是在脚本启动时设置的,我开始在这里看到我的错误,尽管这样的设置值以前对我很有效。尝试此操作只会删除“ECHO已关闭”
并显示一个空白屏幕,在尝试每个回复后,问题仍然存在。echo。
变体有一些缺点,最好使用echo(
),看起来很奇怪,但效果更好