Batch file 要为我修复的批处理脚本

Batch file 要为我修复的批处理脚本,batch-file,Batch File,此代码回显字符和字符的每一行号 但并不完全正确。试试修理。主要是变量计数 必须留下,而不是%%m。请给我解释一下打电话的原因 以及如何使最后一行显示输入字的最后一个字符 @ECHO OFF :input set /p word=input your word: if not defined word goto input (ECHO %word%)> tempfile.txt FOR %%x IN (tempfile.txt) DO ( SET /A lenght=%%~zx - 2

此代码回显字符和字符的每一行号 但并不完全正确。试试修理。主要是变量计数 必须留下,而不是%%m。请给我解释一下打电话的原因

以及如何使最后一行显示输入字的最后一个字符

@ECHO OFF

:input
set /p word=input your word:
if not defined word goto input
(ECHO %word%)> tempfile.txt

FOR %%x IN (tempfile.txt) DO ( SET /A lenght=%%~zx - 2 )
del tempfile.txt
echo %word% got %lenght% characters

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

pause
因此,以下是输出:

input your word:qwertzuio
qwertzuio got 9 characters
1 w
2 e
3 r
4 t
5 z
6 u
7 i
8 o
9

Press any key to continue...

回显字符时,使用的是
!伯爵作为索引,但计数从1开始,而您需要从0开始索引

试试这个:

for /l %%m in (1,1,!lenght!) do (
    set /a count=%%m
    set /a index=%%m-1
    call echo !count! %%word:~!index!,1%%
) 
我正在将
index
设置为
%%m-1
,使其从0开始,但将
count
保留为1。(我还去掉了多余的
set/a count=0
,它没有任何用处。)

以下是一个示例输出:

input your word:foo
foo got 3 characters
1 f
2 o
3 o
Press any key to continue . . .
此代码部分:

for /l %%m in (1,1,!lenght!) do (
    set /a count=0
    set /a count=count+%%m
    call echo !count! %%word:~!count!,1%%
)
这是胡说八道。对于每次迭代,您首先将计数设置为零,然后向其中添加%%m;最终结果是计数始终等于%%m。如果您消除计数并改用%%m,则可能会得到完全相同的结果:

for /l %%m in (1,1,!lenght!) do (
    echo %%m !word:~%%m,1!
)
另一方面,字符串位置从0开始,而不是1,因此您需要像Nate之前所说的那样调整索引。但是,为了直接使用FOR变量进行子字符串提取并避免额外的调用命令,可以通过以下方式方便地修改FOR限制:

set /A lenMinus1=lenght-1
for /l %%m in (0,1,%lenMinus1%) do (
    set /a position=%%m+1
    echo !position! !word:~%%m,1!
)

Antonio

所以这不是一个适合我的网站代码。说出你被困的地方。这是输出。看到了吗?谢谢,伙计,很好,但必须从1开始,而不是从零开始。我是编程新手,试图理解。如果您有时间向我解释为什么在这种情况下必须使用call?如果我理解正确,您的输出必须从1开始。需要明确的是,索引仍然必须以0开头,这就是批处理的工作方式。我已更新代码,因此它对输出使用
count
(从1开始),但对子字符串使用
index
(从0开始)。不需要调用
。我已经删除了。对不起,所有的工作都没有电话。再次感谢,我没有看到你发出呼叫:)谢谢你,阿奇尼,我知道一定有办法避免那次呼叫我同意,但在一开始我要求变量必须留下。在这个代码变量dissapeard之后,因为for命令,有没有办法保留变量计数和索引以供以后使用???我想我不明白你的意思。对于命令,不要使任何变量消失。所有变量在结束后保留其最后的值…好的,那么在结束本地后尝试回显%index%%count%吗?