File 当通过FOR-DO结构解析不同的文件时,CMD控制台会自动关闭
我是Windows命令提示符的基本用户,在将变量defa解析为被调用函数时,我会自动关闭此控制台。我使用了%defa%和!德法!不工作,尽管echo显示for结构正在以正确的方向更改变量。我在下面留下我的代码,以防有人能帮我更正:File 当通过FOR-DO结构解析不同的文件时,CMD控制台会自动关闭,file,for-loop,batch-file,File,For Loop,Batch File,我是Windows命令提示符的基本用户,在将变量defa解析为被调用函数时,我会自动关闭此控制台。我使用了%defa%和!德法!不工作,尽管echo显示for结构正在以正确的方向更改变量。我在下面留下我的代码,以防有人能帮我更正: @echo off setlocal enabledelayedexpansion cd C:\Users\LAPTOPJOSE\Desktop\IMAGEMAGICK\images set/a "th=870" for /f "deli
@echo off
setlocal enabledelayedexpansion
cd C:\Users\LAPTOPJOSE\Desktop\IMAGEMAGICK\images
set/a "th=870"
for /f "delims=" %%m in ('dir /b /o:n') do if not defined defa set "defa=%%m"
REM Loop calling Callme and updating "defa"
FOR %%h in (*.png) DO (
echo Defa parsed !defa!
call:Callme %defa% "%%h" %th%
set "defa=%%h"
echo DefaUpdated !defa!
)
:Callme
echo Parameters %1 %2 %3
pause
magick compare -metric RMSE %1 %2 NULL: 2>C:\Users\LAPTOPJOSE\Desktop\IMAGEMAGICK\outputresult.txt
for /F "tokens=2* delims= " %%C in (C:\Users\LAPTOPJOSE\Desktop\IMAGEMAGICK\outputresult.txt) do set "var2=%%~C"
echo Var2 %var2%
set /A res=%var2:~4,3%
echo Result %res%
::Line that causes the console shut down without completing the action
IF %res% GTR %3 (copy %2 C:\Users\LAPTOPJOSE\Desktop\IMAGEMAGICK\diff-images)
GOTO:EOF
你不想打电话给我吗!德法!“%%h”%th%?(您在对上一个问题的注释中写入了
callme
是另一个批处理文件;call:callme
尝试在当前批处理文件中查找标签:callme
)是的,但随后我改进了代码并将函数传递给同一批处理文件。这个问题在任何情况下都会出现,但现在我发现控制台在运行Callme的最后一行(IF…)时关闭,没有预期的结果。你知道问题出在哪里吗?感谢您对“控制台关闭”的支持:命令行窗口不仅仅是“关闭”。如果通过双击启动脚本,则脚本将在完成或出现严重语法错误后关闭。从已经打开的cmd
窗口手动运行它,它将不会“崩溃”,使您能够看到错误消息。这对您来说并不明显,请与我们共享。顺便说一句:您应该在标签:callme
之前插入一行goto:eof
,以避免无意中运行到子例程中(没有任何参数)。非常感谢,我有时间调试它,我发现第一个值作为文本传递给变量“res”,而不是要比较的数字。我用一个If语句和一个计数器轻松地解决了这个问题。然而,我应该为任何迭代(我的计数器的值)引入一个更通用的if语句,其中“res”不接收任何内容或与数字不同的任何内容。但最初的问题已经解决,可以解决。