Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
File 当通过FOR-DO结构解析不同的文件时,CMD控制台会自动关闭_File_For Loop_Batch File - Fatal编程技术网

File 当通过FOR-DO结构解析不同的文件时,CMD控制台会自动关闭

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

我是Windows命令提示符的基本用户,在将变量defa解析为被调用函数时,我会自动关闭此控制台。我使用了%defa%和!德法!不工作,尽管echo显示for结构正在以正确的方向更改变量。我在下面留下我的代码,以防有人能帮我更正:

@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”不接收任何内容或与数字不同的任何内容。但最初的问题已经解决,可以解决。