gpt4 book ai didi

batch-file - 批处理 - 将字符串分成两个由分隔符分隔的子字符串

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

我有格式为12341234;Super Coca Cola的字符串在 ; 两侧都是可变长度的批处理中。我想将字符串分开并检索两个子字符串。我该如何去做呢?

更新:这是我尝试解决问题的方法。

for /F "tokens=*" %%Z in ('type "C:\Users\daniel.bak\Desktop\Tableau Client Data Extracts\Master Data Extracts\clients.txt"') do (
for /f "delims=; tokens=1,2" %%B in (%%Z) do (
echo %%B
echo %%C
)
)
pause

我得到的输出:

C:\Users\daniel.bak\Desktop\Tableau Client Data Extracts\Master Data Extracts>fo
r /F "tokens=*" %Z in ('type "C:\Users\daniel.bak\Desktop\Tableau Client Data Ex
tracts\Master Data Extracts\clients.txt"') do (for /F "delims=; tokens=1,2" %B i
n (%Z) do (
echo %B
echo %C
) )

C:\Users\daniel.bak\Desktop\Tableau Client Data Extracts\Master Data Extracts>(f
or /F "delims=; tokens=1,2" %B in (2;Glaxo Smith Kline) do (
echo %B
echo %C
) )
The system cannot find the file 2.

C:\Users\daniel.bak\Desktop\Tableau Client Data Extracts\Master Data Extracts>(f
or /F "delims=; tokens=1,2" %B in (3;Merck Canada Inc.) do (
echo
echo %C
) )
The system cannot find the file 3.

C:\Users\daniel.bak\Desktop\Tableau Client Data Extracts\Master Data Extracts>pa
use
Press any key to continue . . .

clients.txt 文件:

2;herpherp
3;derpderp

“系统找不到文件 2”是什么意思?我希望它回显“2”,即第一个字符串的第一部分。但它似乎正在尝试访问名为 2 的文件。怎么了?

最佳答案

按分隔符分割字符串是批处理 for 循环的内置功能。在命令行上使用 for/? 查看语法。您需要使用 delimstokens 选项。

set "my_string=12341234;Super Coca Cola"
for /f "delims=; tokens=1,2" %%a in ("%my_string%") do (
echo %%a
echo %%b
)

如果您的字符串位于文件中,则需要一个循环来遍历文件中的所有行。您只需将 for-loop 参数从字符串更改为文件名,循环就会为您完成这一切。

for /f "usebackq delims=; tokens=1,2" %%a in ("data.txt") do (
echo first: %%~a
echo second: %%~b
)

如果由于某种原因您需要在尝试拆分行之前根据该行做出决定,则可以使用嵌套的 for 循环。外层可以读行,内层可以分割。请注意,如果在外循环中设置变量,则必须使用延迟扩展才能看到内循环中的变量。这是一个例子。

@echo off 
setlocal enabledelayedexpansion

for /f "usebackq delims=" %%l in ("data.txt") do (
set "line=%%~l"

REM Note that inside the outer loop we use !line! and not %line%.
echo Processing "!line!".
for /f "delims=; tokens=1,2" %%a in ("!line!") do (
echo first: %%~a
echo second: %%~b
)
)

关于batch-file - 批处理 - 将字符串分成两个由分隔符分隔的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30195915/

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