这段批处理运行后会自动关闭,怎么修改才能继续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下段的批处理? 展开
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下段的批处理? 展开
4个回答
展开全部
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
::::::下面的代码:::::::::
如果想继续执行后面的命令,应该修改一下:
@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%,是不?
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
行不?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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没循环起来.
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
追问
如果可以就好了,goto :eof 这里好像会关闭批处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询