For / f中的delim选项可以是字符串吗?

时间:2013-04-13 01:16:30

标签: command-line for-loop

我的代码如下:

for / F“tokens = 1,2 delims =%0.3%”%% i in(“double a = 0.3;”)do(

设置a = %% i

设置b = %% j

我想要一个=“double a =”和b =“;”但是这段代码无济于事。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您发布的代码根本不起作用。

for /F "tokens=1,2 delims=%0.3%" %%i in ("double a = 0.3;") do (

%0将替换为yourbatchfilename,由于%" %在环境中没有设置值,因此它将被[nothing]产生

for /F "tokens=1,2 delims=yourbatchfilename.3i in ("double a = 0.3;") do (

,毫不奇怪,这是一个语法错误。

@ECHO OFF
SETLOCAL
for /F "tokens=1,2 delims=3.0" %%i in ("double a = 0.3;") do (
set a=%%i
set b=%%j
)
ECHO first way  :a=%a%+ b=%b%+

ENDLOCAL
SETLOCAL
SET "astring=double a = 0.3;"
SET "aseparator=0.3"
SET "arotorapes=3.0"
for /F "tokens=1,2 delims=%arotorapes%" %%i in ("double a = 0.3;") do (
SET a=%%i
)
CALL SET b=%%astring:*%aseparator%=%%

ECHO second way :a=%a%+ b=%b%+

ENDLOCAL
SETLOCAL
SET "astring=double a = 0.3;"
SET "aseparator=0.3"
CALL SET b=%%astring:*%aseparator%=%%
SET "c=%b%%aseparator%"
SET "a=%astring%"
:loop
IF DEFINED c SET c=%c:~0,-1%&SET a=%a:~0,-1%&GOTO loop

ECHO third way  :a=%a%+ b=%b%+

在第一种方法中,我更改了字符的序列,以解释=子句的"delims之间任何字符的任何序列都充当一个单一的分隔符。代码“失败”就会“起作用”。

在第二种方法中,a的设置以相同的方式工作。没有进一步的信息,真的不可能判断这是否足够。 b是通过使用[nothing]

专门替换源字符串中的所有字符(包括分隔符)来设置的。

在第三种方法中,相同的操作建立b,然后b和分隔符连接在一起。系统地删除原始原始字符串和连接字符串副本末尾的字符。当连接版本变空时,您已从原始版本中删除了分隔符和附录,将原始字符串的部分保留到分隔符。