0
@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

所需的输出是如果我们将批处理文件作为“mcd ...”运行,它应该返回三个目录。但它给出了 Echo is off/Echo is on 运行时出错,取决于 @echo on 或 @echo off。我该如何解决这个问题

这似乎有效

@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

但它给出了错误'1'在编译后此时是意外的。我想这条线是罪魁祸首 IF NOT [str] == [] set str=%str:~1% 但是如何解决这个问题?

4

1 回答 1

3

我认为错误来自 echo %ch% 因为 %ch% 是空白的......所以你正在显示 ECHO 设置。尝试:

echo(%ch%

或者

echo.%ch%

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

@echo off
if "%~1"=="" goto :MEND
set "str=%~1"
于 2013-09-19T14:05:38.073 回答