gpt4 book ai didi

batch-file - 如何在批处理文件中没有 for 循环的情况下用 "="拆分字符串

转载 作者:行者123 更新时间:2023-12-02 01:02:07 24 4
gpt4 key购买 nike

我想用 = 作为分隔符将字符串分成两部分。

我看到了这个 post,但我无法适应。

我试试这个:

set "str=4567=abcde"
echo %str%
set "var1=%str:^=="^&REM #%
echo var1=%var1%

为什么它不起作用?

最佳答案

虽然不是防弹解决方案(使用 for,artoon),但没有更多信息,这可以完成工作

@echo off
setlocal enableextensions enabledelayedexpansion

set "str=4567=abcde"

rem Step 1 - remove the left part
set "str1=!str:%str%!"

rem Step 2 - Get the right part
set "right=!str:*%str1%!"

rem Step 3 - Get the left part
set "left=!str:%right%=!"
set "left=%left:~0,-1%"

echo [%left%] [%right%]

编辑以适应评论(评论中的OP代码适应我的代码,或相反)

for /f "delims=" %%i in ('set') do ( 
setlocal enabledelayedexpansion

rem Step 1 - remove the left part
set "str=%%i"
for %%x in ("!str!") do set "str1=!str:%%~x!"

rem Step 2 - Get the right part
for %%x in ("!str1!") do set "right=!str:*%%~x!"

rem Step 3 - Get the left part
for %%x in ("!right!") do set "left=!str:%%~x=!"
set "left=!left:~0,-1!"

echo [!left!] [!right!]
endlocal
)

不,如前所述,这不是防弹的,一些变量显示出问题(我说过它不是防弹的吗?)。

我不明白的是不使用 for 循环然后使用 for 循环的要求。这样就容易多了

for /f "tokens=1,* delims==" %%a in ('set') do (
echo [%%a] [%%b]
)

另一种选择(不像for那么简单,比前一个更稳定,非防弹)是

    for /f %%a in ('set') do (
call :split left right %%a
echo [!left!] [!right!]
)
goto :eof


:split leftVar rightVar data
set "%~1=%~3"
setlocal enabledelayedexpansion
set "data=%*"
set "data=!data:*%1 %2 %3=!"
set "data=%data:~1%"
endlocal & set "%~2=%data%"
goto :eof

关于batch-file - 如何在批处理文件中没有 for 循环的情况下用 "="拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27269033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com