【问题标题】:break a string in windows batch file打破Windows批处理文件中的字符串
【发布时间】:2014-08-19 08:45:22
【问题描述】:

我需要拆分来自变量的字符串,并根据另一个变量打印结果,类似于以下示例 设置 "DIRECTORY=c:\test1;c:\test2"

set "PROG=TEST1"
REM "PROG=TEST2"

for /f "tokens=* delims=;" %%f in ("%DIRECTORY%") do (
if "%PROG%" == "TEST1"
    echo ...... c:\test1
) else (
    echo ...... c:\test2
)
)

【问题讨论】:

  • 几乎......该帖子的答案基于令牌......我需要的是一个循环,独立于令牌
  • 你说得对,对不起,这是重复的……谢谢
  • 没问题,我不确定是否要开始,但是在另一个问题中有很多解决方案,看起来其中一个会达到目标。

标签: windows batch-file for-loop


【解决方案1】:

你的问题:tokens=*的意思是“走完整的线”,所以delims=;没有效果。

改用这个语法:

for %%f in (%directory%) do echo %%f

这里的问题是:你不能设置任何分隔符,它需要“标准”分隔符:空格、逗号、制表符、;

因此,您必须将每个标记括在双引号中。这样做,将第一个字符串括在双引号中,并将每个分隔符替换为","。所以c:\test1;c:\test2变成"c:\test1","c:\test2",什么都可以轻松解析。 (~in %%~f 删除了周围的双引号)

for %%f in ("%directory:;=","%") do @echo %%~f

【讨论】:

  • 只是评论 tokens=* 实际上的意思是“除删除任何前导空格外取整行”,"delims=" 表示“取整行”,这不是您的意思,但确实如此都一样。
  • @foxidrive 我一直认为"tokens=*""delims=" 可以互换。另一个证明“我知道”与“这是事实”不一样^^感谢您提供的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 2020-07-31
相关资源
最近更新 更多