这段批处理运行后会自动关闭,怎么修改才能继续goto下段的批处理?

@echooffsetlocalenabledelayedexpansionfor/f"tokens=1,2"%%iin(2.txt)doset#%%i=%%jset/p... @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 :eof
call set z=!z!%%#!x!%%
))>3.txt

这段批处理运行后会自动关闭,怎么修改才能继续goto下段的批处理?
展开
 我来答
hnsz2k
2012-11-03 · TA获得超过1582个赞
知道大有可为答主
回答量:1360
采纳率:100%
帮助的人:1454万
展开全部
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
::::::下面的代码:::::::::
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水泥石板
2012-11-05 · TA获得超过266个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:84万
展开全部
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%,是不?
更多追问追答
追问
文本1.txt 内容
123456

文本2.txt 内容
1 12
2 23
3 34
4 45
5 56
6 67

选择1.txt 文本 对应 提取2.txt 的相应值
写入3.txt里

3.txt 结果
122334455667 对应1.txt里每一位数的对应值.而且保持顺序.

整段代码起的作用就是这样。你看看能怎么修改一下呢?
追答
用两重循环。
1.txt就是123456一行的话,可以用for/f,是不是1.txt提取一个数字,对应2.txt的一行?,如果1.txt提取4,那么2.txt就提取开头是4的一行?

这样的话,可以在1.txt,2.txt,旁边建立一个1.bat,输入:
@echo off & setlocal enabledelayedexpasion
set/a "w=0"
for /f "delims=" %%i in (1.txt) do (
set "a=%%i"
set "aa=!a:~%w%,1!"
for /f "tokens=1* delims= " %%m in (2.txt) do (
set "b=%%m"
if "!aa!" equ "!b!" set "c=!c!%%n"
)
set/a "w=!w!+1"
if !w! gtr 6 goto ea
)
:ea
echo !c!>>3.txt

行不?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈哥深惠通勤
2012-11-05 · TA获得超过1176个赞
知道小有建树答主
回答量:1909
采纳率:33%
帮助的人:838万
展开全部
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没循环起来.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
porti120
2012-11-03 · TA获得超过4620个赞
知道大有可为答主
回答量:3188
采纳率:12%
帮助的人:1579万
展开全部
最后一行加pause
追问
如果可以就好了,goto :eof 这里好像会关闭批处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式