Batch file 如何使用windows bat拆分字符串

Batch file 如何使用windows bat拆分字符串,batch-file,Batch File,如何使用windows bat脚本拆分字符串 对于下面的.bat代码段 @echo off & setlocal EnableDelayedExpansion set j=0 for /f "delims=""" %%i in (config.ini) do ( set /a j+=1 set con!j!=%%i call set a=%%con!j!%% echo !a! (echo !a!|findstr "^#">nul 2>nul && (

如何使用windows bat脚本拆分字符串

对于下面的.bat代码段

@echo off & setlocal EnableDelayedExpansion
set j=0

for /f "delims=""" %%i in (config.ini) do (
set /a j+=1
set con!j!=%%i
call set a=%%con!j!%%
echo !a!
(echo !a!|findstr "^#">nul 2>nul && (
    rem mkdir !a!
) || (
    echo +) 
    rem for /f "tokens=2" %%k in(config.ini) do echo %%k
)
)
pause
下面的配置文件

Q

  • 当我在rem开始时为(config.ini)中的/f“tokens=2”%%k删除rem时有什么问题
  • 如何获得/path/to/case和值作为一对?
    for/f xxxx in(testconfig.ini)do(set a=/path/to/case1 set b=vaule1)
  • @ECHO关闭
    SETLOCAL ENABLEDELAYEDEXPANSION
    设置“sourcedir=U:\sourcedir”
    设置“filename1=%sourcedir%\q43407067.txt”
    设置j=0
    对于(%filename1%)中的/f“delims=”“”%%i,请执行以下操作(
    设置/a j+=1
    设置con!j!=%%i
    调用集a=%%con!j!%%
    echo!a!应等于%%i
    (echo!a!| findstr“^#”>nul 2>nul&&(
    回声mkdir!a!
    ) || (
    回声+)
    对于/f“令牌=2”%%k IN(“%i”)do echo“%%k”
    对于/f“令牌=1,2”%%j,在(“%i”)中执行回显“%%j”和“%%k”
    )
    )
    回音----------------------------
    设局
    后藤:EOF
    
    您需要更改
    sourcedir
    的设置以适应您的环境

    我使用了一个名为
    q43407067.txt
    的文件,其中包含了用于测试的数据

    (这些是适合我的系统的设置)

    因此,为了解决您的问题:

  • 因为那一行上的
    关闭了
    在前一行上。那一行上的
    关闭了
    在前一行上。(我将
    rem
    更改为
    回音
    ,这样代码就会产生可见的东西)第一个
    (echo!a!
    行由
    关闭)
    位于(现在)两个
    for/f
    命令之后的行上。以及
    上的
    位于
    for..%%i..do(
    由最后一个
    关闭)
    位于
    echo-----
  • 您不能删除该
    ,因为它参与了括号对

  • 中的
    )之间需要一个空格

  • 我已经展示了一种方法。有关/?|更多信息,请参见提示文档(或此处的许多文章)中的

  • 在你的代码中,
    !a!
    %%i
    相同-因此我不知道你为什么要进行所有的体操-毫无疑问,这是一个显示问题的最小示例


    请注意,由于默认分隔符包含空格,因此如果任何一行在
    /path/to/case
    值中包含空格,则必须重新设计方法。

    我不确定是否理解您需要的确切内容,因此以下内容可能不适合您的需要:

    @Echo关闭
    SetLocal EnableDelayedExpansion
    设置“n=0”
    对于/F“Delims=”(testConfig.ini)Do中的%%A(Set“=%%A”
    如果“!”,1!”=“(设置/A“n+=1”,“i=0”
    Echo=MD%%A
    将“con[!n!]!i!=%%A”)设置为其他(对于/F“Tokens=1-2”%%B In('Echo=%%A'
    )Do(设置/A“i+=1”
    设置“con[!n!]!i!=%%B”&设置/A“i+=1”&设置“con[!n!]!i!=%%C”))
    设局[
    超时-1
    后藤:EOF
    

    如果您对输出感到满意并且真的想创建那些目录,请删除第6行上的
    Echo=
    ,是的,比您要多;我已经通过您的强大帮助解决了这个问题。set b=for/f“delims=”“”%%I in(config.ini)do(set/aj+=1 set con!j!=%I调用set a=%%con j!j!%%rem Echo!a!Echo!a!| findstr“^”>nul&&(rem echo====mkdir==set b=!a!mkdir”%LogDir%\!a!)| |(echo!b!for/F“eol=#令牌=1,2%%%x in(%%i)do(回显键%%x值%%y)))