Command line For/f中的delims选项是否可以是字符串?

Command line For/f中的delims选项是否可以是字符串?,command-line,for-loop,Command Line,For Loop,我的代码如下: 对于/F“令牌=1,2 delims=%0.3%”%%i in(“双a=0.3;”)do( 设置a=%%i 集合b=%%j ) 我想要a=“double a=”和b=“;”,但这段代码帮不上忙 有人知道如何解决这个问题吗?您发布的代码根本不起作用 for /F "tokens=1,2 delims=%0.3%" %%i in ("double a = 0.3;") do ( %0将替换为yourbatchfilename,并且由于环境中未设置值,%“%,因此将替换为[nothi

我的代码如下:

对于/F“令牌=1,2 delims=%0.3%”%%i in(“双a=0.3;”)do(

设置a=%%i

集合b=%%j

)

我想要a=“double a=”和b=“;”,但这段代码帮不上忙


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

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

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
和分隔符连接起来。系统地删除原始字符串和连接字符串副本末尾的字符。当连接的版本变为空时,您已经从原始字符串中删除了分隔符和附录,将原始字符串的部分保留给分隔符。

+1,谢谢Peter。我不知道怎么做,但我完全错过了DELIMS选项中的
%
s。我的测试没有它们,所以它当然“工作”不正确,正如我糟糕地描述的那样。我很高兴你没有简单地“相信签名”:-)我已经删除了我不正确的答案。