Batch file 批处理脚本错误:";“goto在这个时候出人意料”;
当我把一个文件拖到下面的脚本中时,我发现了错误。错误是“此时转到意外状态”,行Batch file 批处理脚本错误:";“goto在这个时候出人意料”;,batch-file,cmd,goto,Batch File,Cmd,Goto,当我把一个文件拖到下面的脚本中时,我发现了错误。错误是“此时转到意外状态”,行转到继续 我了解到,在某些情况下,可以通过使用enabledelayedexpansion来防止此错误,但此处不适用 我还了解到,当未设置errorlevel时,可能会发生此错误。我发现当%1是一个文件时,2>nul pushd正在设置错误级别,因此在转到文件之前,我使用命令cmd/c exit 0重置错误级别。这确实重置了错误级别,但错误仍在发生 我希望有人能指出我的错误。谢谢 @echo off set rootD
转到继续
我了解到,在某些情况下,可以通过使用enabledelayedexpansion来防止此错误,但此处不适用
我还了解到,当未设置errorlevel时,可能会发生此错误。我发现当%1是一个文件时,2>nul pushd正在设置错误级别,因此在转到文件之前,我使用命令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
我想这是因为“轮班”电话。
我尝试给这个文件提供两个参数,但只得到了第二个文件的错误
您可能可以尝试将goto语句置于if条件下。
比如:
我注意到,如果我取消了移位调用,那么脚本将不会有问题(除了无限循环),因此它可能与您所说的移位有关。然而,这种转变对循环行为至关重要。搜索后,我没有找到任何可以说明为什么shift会导致此问题的内容:(。我尝试将goto置于某个条件下,但没有任何帮助。如果没有“%1”==“goto CONTINUE”,则此操作似乎有效。啊,它确实有帮助。我没有在%1附近使用引号。谢谢!
if NOT "%1" == "" goto CONTINUE