gpt4 book ai didi

shell - FindStr 无法正常工作

转载 作者:行者123 更新时间:2023-12-01 07:29:05 24 4
gpt4 key购买 nike

我做了一段批处理代码,我认为这会奏效。我在想这段代码在做什么?我有一些插件,我想测试部署是否正确。所以我从plugins.txt 中得到了pluginlink。然后我用java语句从SVN获取插件。我部署了插件并在 test1.txt 中获得了反馈。然后我在那个文件中做一个 findStr 并搜索“BUILD SUCCESSFUL”,如果它在那里我想添加句子 Build Gelukt,如果它失败我想添加 Build Fout。但是我总是得到答案 Build Gelukt,而正如您在图像中看到的那样,他发回了构建失败的信息。

这段代码有什么问题?

for /f "tokens=* delims= " %%a in (plugins.txt) do (
echo %%a
cd "C:\dotCMS Automatic Install"
java -cp .;"C:\dotCMS Automatic Install\svnkit.jar" Test %%a
cd %dotcms_home%
call ant deploy-plugins > test1.txt
FindStr "SUCCESSFUL" test1.txt
if %ERRORLEVEL% ==1 (echo ^<tr BGCOLOR=\"#FFFFFF\"^>^<td^>%%a^</td^>^<td^>Build Fout^</td^>^</tr^> >> C:\dotCMSResults\goedje.html ) else (echo ^<tr BGCOLOR=\"#00FF00\"^>^<td^>%%a^</td^>^<td^>Build Gelukt^</td^>^</tr^> >> C:\dotCMSResults\goedje.html)
del test1.txt
rem call ant undeploy-plugins >> test.txt
)

enter image description here

最佳答案

经典批处理问题 - 您正在设置 ERRORLEVEL 并尝试使用 %ERRORLEVEL% 访问它同内DO()条款。 %VAR%扩展发生在解析时,整个 FOR ... DO()语句被解析一次,因此您会在执行语句之前看到 ERRORLEVEL 的值。显然这行不通。

jeb 在他关于消失的引用的评论中提到了答案。如果您setlocal enableDelayedExpansion,您的问题将得到解决在顶部,然后使用 !ERRORLEVEL!而不是 %ERRORLEVEL% .此外,GregHNZ 是正确的,因为 ERRORLEVEL 测试应该在您的 FINDSTR 语句之后立即发生。

还有其他方法可以在不需要延迟扩展的括号内处理 ERRORLEVEL:

以下测试 ERRORLEVEL 是否大于或等于 1

IF ERRORLEVEL 1 (...) ELSE (...)

下面根据先前命令的结果有条件地执行命令
FindStr "SUCCESSFUL" test1.txt && (
commands to execute if FindStr succeeded
) || (
commands to execute if prior command failed.
)

关于shell - FindStr 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9835783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com