【批处理】按分隔符获取指定段字符
如批处理中某变量为:AB\CDE\FG\HIJK要求以“\”为分隔符,此时就变为了4节,要取到最后一段字符怎么办?(并非是4节,可能是任意数,但要取到的都是最后一节)...
如批处理中某变量为:
AB\C DE\FG\HI JK
要求以“\”为分隔符,此时就变为了4节,要取到最后一段字符怎么办?
(并非是4节,可能是任意数,但要取到的都是最后一节) 展开
AB\C DE\FG\HI JK
要求以“\”为分隔符,此时就变为了4节,要取到最后一段字符怎么办?
(并非是4节,可能是任意数,但要取到的都是最后一节) 展开
3个回答
展开全部
@echo off
setlocal enabledelayedexpansion
set var=AB\C DE\FG\HIJ K
:loop
for /f "tokens=1,* delims=\" %%i in ('echo !var!') do (
if "%%j"=="" (
REM 后面已经没有词了,设置最后一个字段到LastWord变量中
set LastWord=%%i
) else (
REM 除去第一个字段后,再赋给var变量,进行循环
set var=%%j
REM 下面这一行可以去掉
echo var=!var!
goto :loop
)
)
set LastWord=!LastWord!
setlocal enabledelayedexpansion
set var=AB\C DE\FG\HIJ K
:loop
for /f "tokens=1,* delims=\" %%i in ('echo !var!') do (
if "%%j"=="" (
REM 后面已经没有词了,设置最后一个字段到LastWord变量中
set LastWord=%%i
) else (
REM 除去第一个字段后,再赋给var变量,进行循环
set var=%%j
REM 下面这一行可以去掉
echo var=!var!
goto :loop
)
)
set LastWord=!LastWord!
展开全部
:StringGetLastPart ( ://&return checkstr without "", %char delims
set __v__maxlooptimes=32
@FOR /L %%i in (1,1,%__v__maxlooptimes%) do (
@FOR /F "eol= tokens=1,* delims=%2" %%i IN ('echo !%1!') DO (
if "%%j"=="" (
set %1=%%i
GOTO :eof
) else (
set %1=%%j
)
)
)
set %1=[error]: over max loop times
GOTO :eof
)
set __v__maxlooptimes=32
@FOR /L %%i in (1,1,%__v__maxlooptimes%) do (
@FOR /F "eol= tokens=1,* delims=%2" %%i IN ('echo !%1!') DO (
if "%%j"=="" (
set %1=%%i
GOTO :eof
) else (
set %1=%%j
)
)
)
set %1=[error]: over max loop times
GOTO :eof
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
set s=AB\C DE\FG\HI JK
set f=\
set n=1
:begin
call set x=%%s:~-%n%,1%%
if "%x%"=="%f%" goto end
set /a n+=1
goto begin
:end
set/a n-=1
call set s=%%s:~-%n%,%n%%%
echo %s%
set s=AB\C DE\FG\HI JK
set f=\
set n=1
:begin
call set x=%%s:~-%n%,1%%
if "%x%"=="%f%" goto end
set /a n+=1
goto begin
:end
set/a n-=1
call set s=%%s:~-%n%,%n%%%
echo %s%
追问
执行结果貌似是对了,看不懂……能不能解释一下啊?谢谢
追答
从最后一个字符向前找分隔符,找到后取后面的字符串。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询