这个问题已经在这里有一个答案:
试图创建一个用于创建基于词在句子中数号码的字符串的批处理文件。
我有一个包含不同数量的话,例如一个变量:句子=“这是一个句子”
我需要生成的字符串将是“1 2 3 4”,因为是在句子4个字。
同样,句=“这是一个较长的句子因为理由”将产生“1 2 3 4 5 6 7”
我想沿着这个线的东西:
SET sentence=this is a longer sentence because reasons
SET count=
SET numbers=1
FOR %%a IN (%sentence%) DO (
SET "numbers=%numbers% %count%" & SET /A count+=1
)
ECHO Resulting number string: %numbers%
ECHO Counter: %count%
...继续追加增加计数变量数结束。所以每次FOR循环运行时,它变为 “1 2”, “1 2 3”, “1 2 3 4” 等。
计数器工作正常,报告“计数器:7”可是这绳子只是报告“得出的数串:1”
它不添加计数器到端...并且当我有它附加,它导致“1 7”而不是“1 2 3 4 5 6 7”
这是无论我是否使用SETLOCAL EnableDelayedExpansion与否。
我在做什么错在这里?
(编辑:这个问题涉及到一个附加递增的数字到字符串的结尾正如我在我原来的问题提到,EnableDelayedExpansion没有什么区别,如果启用或禁用)
首先,您需要preferbly作为delayedexpansion
要设置变量,需要一个代码块内部回声。此外,你并不需要使用2个不同的计数器:
按你的意见摆在一个行:
@echo off
setlocal enabledelayedexpansion
set "sentence=this is a longer sentence because reasons"
set count=
set numbers=
for %%a IN (%sentence%) DO (
call set "numbers=!numbers!!count!" & set /A count+=1
)
set Resulting number string: %numbers% %count%
和相同的,而不delayedexpansion,通过使用call
@echo off
set "sentence=this is a longer sentence because reasons"
set count=
set numbers=
for %%a IN (%sentence%) DO (
call set "numbers=%%numbers%% %%count%%" & set /A count+=1
)
echo Resulting number string: %numbers% %count%