猿问

如何在Windows批处理文件中按空格分割字符串?

假设我有一个字符串“ AAA BBB CCC DDD EEE FFF”。


如何在批处理文件中拆分字符串并检索第n个子字符串?


C#中的等效项为


"AAA BBB CCC DDD EEE FFF".Split()[n]


慕森王
浏览 1891回答 3
3回答

千巷猫影

看HELP FOR例子或快速尝试一下 for /F %%a in ("AAA BBB CCC DDD EEE FFF") do echo %%c

四季花海

遍历字符串的三个可能的解决方案:版本1:@echo off & setlocalset s=AAA BBB CCC DDD EEE FFFfor %%a in (%s%) do echo %%a版本2:@echo off & setlocalset s=AAA BBB CCC DDD EEE FFFset t=%s%:loopfor /f "tokens=1*" %%a in ("%t%") do (   echo %%a   set t=%%b   )if defined t goto :loop版本3:@echo off & setlocalset s=AAA BBB CCC DDD EEE FFFcall :sub1 %s%exit /b:sub1if "%1"=="" exit /becho %1shiftgoto :sub1当字符串包含通配符(例如“ *”或“?”)时,版本1不起作用。版本1和版本3处理字符,例如'=',';' 或','作为单词分隔符。这些字符与空格字符具有相同的效果。

鸿蒙传说

以下代码将使用任意数量的子字符串分割字符串:@echo offsetlocal ENABLEDELAYEDEXPANSIONREM Set a string with an arbitrary number of substrings separated by semi colonsset teststring=The;rain;in;spainREM Do something with each substring:stringLOOP    REM Stop when the string is empty    if "!teststring!" EQU "" goto END    for /f "delims=;" %%a in ("!teststring!") do set substring=%%a        REM Do something with the substring -         REM we just echo it for the purposes of demo        echo !substring!REM Now strip off the leading substring:striploop    set stripchar=!teststring:~0,1!    set teststring=!teststring:~1!    if "!teststring!" EQU "" goto stringloop    if "!stripchar!" NEQ ";" goto striploop    goto stringloop):ENDendlocal
随时随地看视频慕课网APP
我要回答