Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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 运行批处理文件时出现Echo关闭错误或Echo打开错误_Batch File_Cmd - Fatal编程技术网

Batch file 运行批处理文件时出现Echo关闭错误或Echo打开错误

Batch file 运行批处理文件时出现Echo关闭错误或Echo打开错误,batch-file,cmd,Batch File,Cmd,所需的输出是,如果我们以“mcd…”的形式运行批处理文件,它应该返回三个目录。 但根据@Echo on或@Echo off运行时,它会给出Echo关闭/Echo打开错误。 如何解决此问题 这似乎有效 @echo off set /p str=%1 :MSTART set /p ch=%str:~0,1% IF '%ch%' == '.' GOTO MEQUAL echo %ch% goto MEND :MEQUAL call cd.. set /p str=%str:~1% go

所需的输出是,如果我们以“mcd…”的形式运行批处理文件,它应该返回三个目录。 但根据@Echo on或@Echo off运行时,它会给出Echo关闭/Echo打开错误。 如何解决此问题

这似乎有效

@echo off
set /p str=%1

:MSTART

 set /p ch=%str:~0,1%
 IF '%ch%' == '.' GOTO MEQUAL
 echo %ch%
 goto MEND

 :MEQUAL
call cd..
set /p str=%str:~1%
goto MSTART

:MEND

但它给出的错误“1”在完成后的这个时候是意外的。如果不是[str]=[]设置str=%str:~1%,我想这一行就是罪魁祸首,但是如何修复呢

我认为错误来自echo%ch%,因为%ch%为空。。。因此,您正在显示回声设置。尝试:

@echo off
set str=%1

:MSTART

set ch=%str:~0,1%
IF '%ch%' == '.' GOTO MEQUAL
goto MEND

:MEQUAL
call cd..
IF NOT [str] == [] set str=%str:~1%
goto MSTART

:MEND

编辑 将此项添加到发布文件的开头

echo.%ch%

我认为错误来自回显%ch%,因为%ch%为空。。。因此,您正在显示回声设置。尝试:

@echo off
set str=%1

:MSTART

set ch=%str:~0,1%
IF '%ch%' == '.' GOTO MEQUAL
goto MEND

:MEQUAL
call cd..
IF NOT [str] == [] set str=%str:~1%
goto MSTART

:MEND

编辑 将此项添加到发布文件的开头

echo.%ch%

为什么这被标记为一个PHP问题?为什么这被标记为一个PHP问题?谢谢RGuggisberg,echo.%ch%成功了。但是为什么%ch%是空的,并且没有指向str的第一个字符。我的批处理文件的名称是mcd,我以“mcd…”的形式运行它。这是另一个问题,与您第一次提出的错误是开/关问题完全无关。现在问题并没有那么严格的定量,所以你真的应该为你的新问题提出另一个问题。出现新问题的原因是
[str]
是一个字符串,它永远不能等于
[]
<如果
str
为空,则code>[%str%]可能是空的,但更好的检查方法是
如果定义了str
。目前,第一个字符将被反复从
str
中删除,直到它变为空,这将导致
set ch出现语法问题。
Peter提出了一个很好的观点。这个问题似乎已经改变了,现在我们不再确定我们在哪里。对于最初的问题。。。您可能应该检查以确保%1不是空的。请参阅我编辑的答案。set str=%~1Thanks RGuggisberg,echo.%ch%有效。但是为什么%ch%是空的,并且没有指向str的第一个字符。我的批处理文件的名称是mcd,我以“mcd…”的形式运行它。这是另一个问题,与您第一次提出的错误是开/关问题完全无关。现在问题并没有那么严格的定量,所以你真的应该为你的新问题提出另一个问题。出现新问题的原因是
[str]
是一个字符串,它永远不能等于
[]
<如果
str
为空,则code>[%str%]可能是空的,但更好的检查方法是
如果定义了str
。目前,第一个字符将被反复从
str
中删除,直到它变为空,这将导致
set ch出现语法问题。
Peter提出了一个很好的观点。这个问题似乎已经改变了,现在我们不再确定我们在哪里。对于最初的问题。。。您可能应该检查以确保%1不是空的。请参阅我编辑的答案。set str=%~1