1

我是一批新人。尝试了几天批量制作一些东西,但有一个我无法解决的问题。我读了很多你的评论,但没有找到答案。也许你能帮助我?

重点是:

  1. 我从键盘输入字符串(例如 10 个字符)。它的名字是“allinputstring”
  2. 长度的计算是可以的(通过在 txt 文件中重定向并扩展其字节)。名称“长度”
  3. 解析 10 段(字符串)中的字符串是可以的。

所以这里有一个问题,我想回显这些片段,所以我使用下一个代码,我使用计数器来找出计数器是否给我很好的计数作为输出变量,然后回显它以在屏幕上查看它是否很好。计数器似乎不错,片段字符串的结束回声就足够了。但我想放入第 5 行。Variablecount而不是"%%m", 并且找不到如何做到这一点的语法方式。

setlocal enabledelayedexpansion
for /l %%m in (1,1,!lenght!) do (
  set /a count=0
  set /a count=count+%%m
  echo !count!!allinputstring:~%%m,1!
)
endlocal

请帮我。

4

2 回答 2

4

试试这个:

@echo off &setlocal enabledelayedexpansion
set /a lenght=9
set "allinputstring=ABCDEFGHIJ"
for /l %%m in (0,1,%lenght%) do (
  set /a count=0
  set /a count+=%%m
  echo !count! !allinputstring:~%%m,1!
)
endlocal

输出是:

0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
8 I
9 J
于 2013-04-03T22:49:28.127 回答
3
@ECHO off
setlocal ENABLEDELAYEDEXPANSION
SET allinputstring=abcdefghijk
SET lenght=10
for /l %%m in (1,1,!lenght!) do (
  set /a count=0
  set /a count=count+%%m
  FOR %%z IN (!count!) DO echo !count! !allinputstring:~%%z,1!
)
GOTO :eof

这是否符合您的要求?


所以...让 COUNT 显示(我已将其分配给 KOWNT,但语法endlocal&set count=%count%会将其分配给COUNT

我更改了 的起始值,FOR/L因为字符计数从字符串中的字符#0 开始。

@ECHO off
setlocal ENABLEDELAYEDEXPANSION
SET allinputstring=abcdefghij
SET lenght=9
for /l %%m in (0,1,!lenght!) do (
  set /a count=0
  set /a count=count+%%m
  FOR %%z IN (!count!) DO echo !count! !allinputstring:~%%z,1!
)
endlocal&SET KOWNT=%count%
ECHO Now KOWNT=%KOWNT% but count=%count% because we have exited the SETLOCAL
GOTO :eof

ENDLOCAL遇到 时,解析器替换该行中变量的当前值,然后执行该行。

因此,该行被执行为

endlocal&set KOWNT=9

因为当时的值为count9。

执行时SETLOCAL,自匹配以来对环境的所有更改都将SETLOCAL被丢弃。环境变量在SETLOCAL执行时恢复到它们的状态并count再次变为空(就像在例程之前一样)。然后执行SET指令,设置KOWNT为 9。

于 2013-04-04T01:24:02.400 回答