Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file “批量退货”;“回声关闭”;当寻找变量值时_Batch File - Fatal编程技术网

Batch file “批量退货”;“回声关闭”;当寻找变量值时

Batch file “批量退货”;“回声关闭”;当寻找变量值时,batch-file,Batch File,所以我创建了一个脚本来检查某些文件夹/文件路径,它做得很好,在检查是否找到文件夹的过程中,它将变量的值更改为“found”。如果找不到该文件夹,它会将该值保留为默认值“NA”。但是,当返回到显示值的菜单时,它返回的只是“ECHO is OFF”。首先,我尝试将它们保存到日志文件中,但它拒绝保存它们。我猜这也会阻止我查看这些值 我已经尝试过添加“IF NOT”以确保它不会命中丢失的文件夹,然后拒绝设置值,但这就是我所能想到的 下面是一段代码 检查期间: IF EXIST System\System

所以我创建了一个脚本来检查某些文件夹/文件路径,它做得很好,在检查是否找到文件夹的过程中,它将变量的值更改为“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%
我没有预料到会有任何错误,但我们到了。
没有错误,例如“系统找不到…等”

如果要回显任何内容,包括可能的空行,可以在回显命令和变量之间添加“.”,如:

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(
),看起来很奇怪,但效果更好