for循环中的变量操作 [英] variable manipulation in a for loop
问题描述
:floop
for / F %% G IN('TYPE info.txt')DO call:line1 %% G
goto:end
:line1
set / a cnt + = 1
set / a div =%cnt%%2
if%div%== 0 call:line2%1
goto:EOF
:line2
设置ord =%1
echo%ord%
暂停
:循环
暂停$ b $ set var =%ord%
set char = %var:〜0,1%
set var =%var:〜1%
echo%char%
if NOT%var%== _ end goto loop
goto floop
:end
:loop
pause
set var =%ord%$ b $ set char =%var:〜0,1%$ b $ set var =%var:〜 1%
echo%char%
if NOT%var%== _ end goto loop
goto floop
你的第一个问题是在这部分^^
你正在设置 这样可以解决这个问题。 但是您应该考虑如果 它会调用一个语法错误。 (你可以通过编码来解决这个问题) 然而,当 So my batch code is supposed to print out a string of numbers one by one. My problem is it seems to get stuck in the first letter. I have (I believe) an manipulation command to remove the first number of the string but it doesn't seem to work. If for example the info.txt would be 12345678 the :loop would get stuck in 1.
Your first problem is in this part^^ You are setting This should cure that problem. but you should then consider what happens if which it will call a syntax error. (you could fix this by coding ) But then - what happens when 这篇关于for循环中的变量操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋! var
到 ord
的值; char
到 var
的第一个字符。 var 到第一个之后的其余部分;显示
char
(第一个字符),然后从 ord 中循环回到设置
var
code $ c
$ b $ $ $ $ $ $ $ $ $
:loop
pause
set char =%var:〜0,1%$ b $ set var =%var:〜1%
echo%char%
如果不是%var%== _ end goto loop
goto floop
var
不 终止 _end
。最终, var
将变为空,而 cmd
会尝试解释行
if NOT == _ end goto loop
:OLD_loop
pause
set var =%ord%_end
:loop
$ b $ p
$ b var
被修剪为 _end
? GOTO floop
将再次读取文件,从第一行开始,处理它,最终找到 var
= _end
,返回到 floop
,呃 - 我们之前已经在这里了....一段时间后,cmd将用完因为处理你的文件会调用子程序,但是永远不会返回... :floop
for /F %%G IN ('TYPE info.txt') DO call :line1 %%G
goto :end
:line1
set /a cnt+=1
set /a div=%cnt% %% 2
if %div% == 0 call :line2 %1
goto :EOF
:line2
set ord=%1
echo %ord%
pause
:loop
pause
set var=%ord%
set char=%var:~0,1%
set var=%var:~1%
echo %char%
if NOT %var%==_end goto loop
goto floop
:end
:loop
pause
set var=%ord%
set char=%var:~0,1%
set var=%var:~1%
echo %char%
if NOT %var%==_end goto loop
goto floop
var
to the value of ord
; char
to the first charater of var
; var
to the rest after the first; displaying char
(the first character) and then looping back to setting var
from ord
...:OLD_loop
pause
set var=%ord%
:loop
pause
set char=%var:~0,1%
set var=%var:~1%
echo %char%
if NOT %var%==_end goto loop
goto floop
var
does not terminate _end
. Eventually, var
will become empty, and cmd
will try to interpret the lineif NOT ==_end goto loop
:OLD_loop
pause
set var=%ord%_end
:loop
var
is trimmed down to _end
? GOTO floop
will read the file again, starting at the first line, processing it, eventually finding var
=_end
, back to floop
, er - we've been here before.... After a while, cmd will run out of stack space because processing your file calls the subroutine, but never returns...