2014-07-14 3 views
0

파일을 드래그 할 때 아래 스크립트에서 오류가 발생합니다. 이 오류는 "이 시간에 예상치 못한 오류가 발생했습니다"goto CONTINUE에 있습니다.배치 스크립트 오류 : "이 시점에서 goto가 예기치 않게 발생했습니다"

나는이 오류가 어떤 경우에는 enabledelayedexpansion을 사용함으로써 방지 될 수 있다고 읽었지만 여기서는 적용되지 않습니다.

또한이 오류는 오류 수준이 설정되지 않은 경우 발생할 수 있음을 읽었습니다. 나는 2 ~ nul pushd가 % ~ 1이 파일 일 때 에러 레벨을 설정하고 있기 때문에, goto FILE im은 cmd/c exit 0 명령을 사용하여 에러 레벨을 재설정하기 전에 발견했다. 이 오류는 여전히 발생하지만 오류 수준을 다시 설정했습니다.

누군가 내 방식의 오류를 지적 할 수 있기를 바랍니다. 감사!

@echo off 
set rootDir=%~dp0 
cd "%rootDir%" 

del BatchTask.log 

echo |TIME|FIND /i "current">>BatchTask.log 
echo |DATE|FIND /i "current">>BatchTask.log 

:CONTINUE 
if %1 == "" goto END 
set inDir="%~1" 

if exist "%~1" (2>nul pushd "%~1" && (popd&goto FOLDER) || (cmd /c exit 0)&goto FILE) 

:FILE 
set outDir=%~dp1 
IF %outDir:~-1%==\ (SET outDir=%outDir:~0,-1%) 
goto CONVERT 

:FOLDER 
set outDir=%~1 
goto CONVERT 

:CONVERT 
set outDir="%outDir%_Out" 
shift 
"%rootDir%\out\ReleaseWithSymbols\Converter.exe" %inDir% %outDir% 

goto CONTINUE 

:END 
cd "%rootDir%" 

echo |TIME|FIND /i "current">>BatchTask.log 
echo |DATE|FIND /i "current">>BatchTask.log 

답변

1

"교대"때문에 나는 생각합니다. 이 파일에 두 개의 인수를주고 두 번째 파일에 대해서만 오류가 발생했습니다.

if 조건에 goto 문을 넣으십시오. 같은 는 :

if NOT "%1" == "" goto CONTINUE 
+0

난 후, 이동 전화 스크립트를 가지고가는 경우에 실 거예요 (떨어져 무한 루프에서) 문제가있는 그래서 당신이 말한대로 그것이 변화 관련이있을 수 있습니다 것으로 나타났습니다. 그러나 전환은 루핑 동작에 필수적입니다. 검색 후 나는이 변화를 일으키는 원인이 될 수있는 것을 발견하지 못했습니다 :(. 나는 조건에 고토를 넣으려고했지만 도움이되지 않았습니다. "% 1"== ""고토가 아니면 – 0xC0DEFACE

+0

계속 : – mohitj2007

+0

아 도움이되었습니다. % 1 주변에 따옴표가 없습니다. 감사합니다! – 0xC0DEFACE

관련 문제