在将文件拖放到下面时,我在下面的脚本中收到错误。行goto CONTINUE
上的错误“此时意外发生”。
我读到在某些情况下可以使用 enabledelayedexpansion 阻止此错误,但这不适用于此。
我还读到,如果未设置errorlevel,则会发生此错误。我发现2> nul pushd在%~1是文件时设置错误级别,所以在goto FILE之前使用命令cmd / c退出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
答案 0 :(得分:1)
我认为这是因为"转移"呼叫。 我尝试给这个文件提供两个参数,并且只为第二个文件出错。
你可能会尝试将goto语句放在if条件中。 像:
if NOT "%1" == "" goto CONTINUE