【发布时间】:2017-08-18 12:37:46
【问题描述】:
我想在 Windows 上使用 cmd/batch 将数字拆分为单独的数字并将它们存储到变量中。例如,数字“38”应在 VAR1 中存储为“3”,在 VAR2 中存储为“8”。
这是我目前对这个问题的看法:
@echo off
SET NUMBER=38
FOR /F "TOKENS=1,2 delims=0123456789" %%A IN ("%NUMBER%") DO (CALL :VARSET %%A %%B)
ECHO %NUMBER% has the fallowing digits:
ECHO 1st digit: %VAR1%
ECHO 2nd digit: %VAR2%
PAUSE
EXIT /B 0
:VARSET
set VAR1=%1
set VAR2=%2
GOTO:EOF
我希望输出是:
ECHO 38 has the fallowing digits:
ECHO 1st digit: 3
ECHO 2nd digit: 8
但我明白了:
ECHO 38 has the fallowing digits:
ECHO 1st digit: Echo is off.
ECHO 2nd digit: Echo is off.
问题似乎在于我使用“0123456789”作为分隔符。也许使用 FOR-LOOP 根本不可行?
编辑:错别字
【问题讨论】:
-
您可能会发现 SS64's page on substrings 感兴趣。
-
你似乎理解错了
for /F:for /F将字符串拆分为由分隔符分隔的标记,因此它们被删除;例如:for /F "tokens=1,2 delims=_" %I in ("_abc__def__gh") do @echo/%I,%J将返回abc,def;在您的情况下,输入字符串仅包含分隔符(所有十进制数字,delims=0123456789),因此没有什么可提取的......
标签: windows batch-file for-loop cmd delimiter