所以,我在弄乱一些代码,遇到了一个奇怪的问题。我在名为“ tests”的文件中有一个字符串,其名称为“ 1:23195068336843541324”,我想要一个for循环来查找第3个字符,然后从该循环中找到从第7个字符开始的一定数量的字符。在这种情况下,我想找到第7个和第8个字符。所以我想出了这个嵌套的for循环:
@ECHO off
SETLOCAL EnableDelayedExpansion
FOR /L %%i IN (1,1,5) DO (
FOR /F %%j IN ('FINDSTR /C:"%%i:" tests.txt') DO (
SET PH=%%j
SET mon=!PH:~2,1!
ECHO !mon!
SET test%%i=!PH:~6,%mon%!
ECHO !test1!))
ECHO语句仅用于调试,因此我可以看到设置为什么。
但是每次都输出ECHO is OFF
,因为从未设置test1
。我使用以下循环重新创建了它:
SETLOCAL EnableDelayedExpansion
SET test=123
SET number=2
FOR /L %%i IN (1,1,5) DO (
SET t%%i=!test:~1,%number%!
ECHO !t1!)
,效果很好。如果我在第一个循环中为mon
输入一个数字,它也可以正常工作。我在这里做错了什么?谢谢!
答案 0 :(得分:3)
我认为这是您要尝试做的。我真的不明白您为什么要做自己的工作,而这是尝试帮助某人编写代码时成功的一半。
@ECHO off
SETLOCAL EnableDelayedExpansion
FOR /L %%j IN (1,1,5) DO (
FOR /F %%i IN ('FINDSTR /C:"%%j:" tests.txt') DO (
SET PH=%%i
SET mon=!PH:~2,1!
ECHO mon=!mon!
FOR /F "delims=" %%G IN ("!mon!") do SET test%%j=!PH:~6,%%G!
ECHO test%%j=!test%%j!
)
)