我们如何使用Windows bat分割字符串

时间:2017-04-14 07:21:39

标签: batch-file

我们如何使用windows bat脚本分割字符串?

以下.bat代码段

for /f xxxx in (testconfig.ini) do (set a=/path/to/case1 set b=vaule1)

在配置文件下面 test config file

  1. 我在 rem开始时 rem 时出现了什么错误/ f"令牌= 2" (config.ini)中的%% k执行echo %% k
  2. 如何将 / path / to / case 作为一对? using (var currentFrame = await mediaCapture.GetPreviewFrameAsync(videoFrame))

2 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q43407067.txt"

set j=0

for /f "delims=""" %%i in (%filename1%) do (
set /a j+=1
set con!j!=%%i
call set a=%%con!j!%%
echo !a! SHOULD BE EQUAL TO %%i
(echo !a!|findstr "^#">nul 2>nul && (
    echo mkdir !a!
) || (
    echo +)
    for /f "tokens=2" %%k IN ("%%i") do echo "%%k"
    for /f "tokens=1,2" %%j IN ("%%i") do echo "%%j" and "%%k"
)
)
ECHO ----------------------------
SET con

GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

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

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

所以 - 解决你的问题:

  1. 因为该行上的)关闭了之前的(行上的) 行关闭之前的(。 (我将rem更改为echo,以便代码生成可见的内容。(行上的第一个(echo !a!)关闭(现在)两个for /f命令后面的行。并且(上的for..%%i..do(已被)
  2. 之前的最终echo -----关闭

    您无法删除),因为它正在参与括号对。

    1. in(之间需要一个空格。

    2. 我已经表明了一种方式。请参阅文档提示中的for /?|more(或SO上的许多文章)

    3. 在你的代码中,!a!%%i相同 - 所以我不知道你为什么要进行所有的体操 - 无疑是提供一个显示问题的最小例子

      请注意,由于默认分隔符包含 Space ,如果任何行包含/path/to/casevalue中的空格,那么您必须重新设计方法

答案 1 :(得分:0)

我'不确定我是否理解你需要什么,所以后面的内容可能不适合你的需求:

@Echo Off
SetLocal EnableDelayedExpansion
Set "n=0"
For /F "Delims=" %%A In (testConfig.ini) Do (Set "_=%%A"
    If "!_:~,1!"=="#" (Set/A "n+=1", "i=0"
        Echo=MD %%A
        Set "con[!n!]!i!=%%A") Else (For /F "Tokens=1-2" %%B In ('Echo=%%A'
        ) Do (Set/A "i+=1"
            Set "con[!n!]!i!=%%B"&&Set/A "i+=1"&&Set "con[!n!]!i!=%%C")))
Set con[
Timeout -1
GoTo :EOF

如果您对输出感到满意并且确实想要创建这些目录,请删除第6行的Echo=