goto :eof 一般用于含有多个批处理“段”的批处理,例如有函数的批处理。这个批处理只有一段,所以这个 goto :eof 的功能就等同于 exit 了。
如果想继续执行后面的命令,应该修改一下:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2" %%i in (2.txt) do set #%%i=%%j
set /p s=<1.txt
(for /l %%i in (0,1,999) do (
call set x=!s:~%%i,1!
if "!x!"=="" echo !z!&goto AAA
call set z=!z!%%#!x!%%
))>3.txt
:AAA
::::::下面的代码:::::::::
1.
goto用法是:
goto a
``````
:a
`````
你的goto :eof 可以改成a,不要冒号
2.
for /f "tokens=1,2" %%i in (2.txt) do set #%%i=%%j
这句话是吧%%j的内容放到变量“#%%i”中,你的%%i是什么?2.txt内容是什么?说一下好不?
我推测变量“#%%i”中,%%i应该是数字12345··你都没有说2.txt的内容是什么。是不是建立了变量#1,#2,#3,#4```要和后面的z和在一起,赋值给z?
3.
set /p s=<1.txt
这句话,是把1.txt的首行,复制给变量s,是不是你想要的效果?从哪里冒出个1.txt
4.
call set z=!z!%%#!x!%%
你是想把变量z,加上%,加上# , 加上变量!x!,加上 %%,然后赋值给z吗?
如果z原来是qq,!x!是1,执行之后z的值就是:qq%#1%,是不?
for /l %%i in (0,1,999) do (
call set x=!s:~%%i,1!
if "!x!"=="" echo !z!&goto :eof
这一段意思是如果X为空goto eof就关闭了.当%%i从0开始循环时,前面的set X=!s:~%%i,1!设置跳过1个数字此时x为空了,也就是说你的for没循环起来.
最后一行加pause