Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 批处理脚本错误:";“goto在这个时候出人意料”;_Batch File_Cmd_Goto - Fatal编程技术网

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