CMD批处理提取变量字符串
现有一123.txt文本,内容如下:A0001B1001C2001D3001E4001F5001G6001H0001I1001J2001K3001L4001M5001N6...
现有一123.txt文本,内容如下:
A0001 B1001 C2001 D3001 E4001 F5001 G6001
H0001 I1001 J2001 K3001 L4001 M5001 N6001
我要提取其中每行以空格分隔后的1,2,5,6段文本,
建一批处理,命令如下:
@echo off
for /f "tokens=1,2,5,6 delims= " %%i in (123.txt) do (
echo %%i
echo %%j
echo %%k
echo %%l
)
pause
能够正确提取我要的文本,
但如果我要对提取的文本变量%%i进行部分字符串提取时,套用%i:~[m[,n]]%截取一直无效。
比如读取第一行时%%i变量为A0001,我想截取0001不要A,用%i:~1%不能正确显示,有没有解决方案,或者解释下我错在哪? 展开
A0001 B1001 C2001 D3001 E4001 F5001 G6001
H0001 I1001 J2001 K3001 L4001 M5001 N6001
我要提取其中每行以空格分隔后的1,2,5,6段文本,
建一批处理,命令如下:
@echo off
for /f "tokens=1,2,5,6 delims= " %%i in (123.txt) do (
echo %%i
echo %%j
echo %%k
echo %%l
)
pause
能够正确提取我要的文本,
但如果我要对提取的文本变量%%i进行部分字符串提取时,套用%i:~[m[,n]]%截取一直无效。
比如读取第一行时%%i变量为A0001,我想截取0001不要A,用%i:~1%不能正确显示,有没有解决方案,或者解释下我错在哪? 展开
1个回答
展开全部
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2,5,6 delims= " %%i in (123.txt) do (
set Str1=%%i
set Str2=%%j
set Str5=%%k
set Str6=%%l
echo %%i -- !Str1:~1!
echo %%j -- !Str2:~1!
echo 脊前%%k -- !Str5:~1!
echo %%l -- 老野败 !Str6:~1!
)
pause
截取字符串,是赋予一个变量后进行处理的,而不是直接%%i上侍颤处理。
同时在for中赋值变量,就要开启环境变量延迟setlocal enabledelayedexpansion 否则变量将不起作用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询