如果%ip%是空的(也就是直接回车的效果),那么:
echo %ip% &pause
就相当于执行了echo & pause。你在命令行下试一下单独执行echo命令就知道是什么效果了。
感觉你的批处理逻辑上有问题。
@echo off
set ip=
set /p ip=请输入IP地址(格式:192.168.1.6):
if "%ip%"=="" goto _getfromfile
echo %ip% > %TEMP%\YouIp.tmp
goto _next
:_getfromfile
if not exist %temp%\YouIp.tmp goto _quit
for /f %%i in (%TEMP%\YouIp.tmp) do set ip=%%i
if not "%ip%"=="" goto _next
goto _quit
:_next
echo %ip% &pause
...
:_quit