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 ..." として実行すると、3 つのディレクトリに戻る必要があることです。しかし、 @echo on または @echo off に応じて実行中に Echo is off/ Echo is on エラーが発生します。この問題を解決するにはどうすればよいですか

これはうまくいくようです

@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

%ch% が空白であるため、エラーは echo %ch% から発生していると思います...したがって、ECHO設定を表示しています。試す:

echo(%ch%

また

echo.%ch%

編集 投稿したファイルの先頭にこれを追加します。

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