You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CMD批处理以完整单词作为分隔符分割字符串

批处理按完整字符串分割的解决方案

嘿,你遇到的问题我太懂了!for /f命令里的delims参数是按单个字符集合来分割的,不是你以为的完整字符串。所以当你写delims=MYSTR时,它会把M、Y、S、T、R每一个字符都当成独立的分隔符,自然只会在第一个M的位置就分割了,完全达不到按MYSTR整词分割的效果。

要实现按完整单词分割,我们可以用字符串替换+单字符分隔的技巧,步骤如下:

  1. 先把目标分隔符MYSTR替换成一个原字符串中不存在的特殊字符(比如|,只要确保原字符串里没这个字符就行)
  2. 再用for /f以这个特殊字符作为分隔符来分割处理后的字符串

下面是可以直接运行的完整代码:

@echo off
setlocal enabledelayedexpansion

:: 定义原始字符串和分隔符
set "original_str=sssssMssssMYSTR___M___MYSTRzzzzzzMzzzz"
set "split_word=MYSTR"

:: 把分隔符替换成特殊字符|(可根据实际情况换其他字符)
set "temp_str=!original_str:%split_word%=|!"

:: 按|分割字符串,tokens=1,2,3对应三段内容
for /f "tokens=1,2,3 delims=|" %%A in ("!temp_str!") do (
    set "part1=%%A"
    set "part2=%%B"
    set "part3=%%C"
)

:: 输出结果
echo 分割后的三段内容:
echo 第一段:*!part1!*
echo 第二段:*!part2!*
echo 第三段:*!part3!*

endlocal

运行这段代码后,你就能得到期望的结果:

分割后的三段内容:
第一段:*sssssMssss*
第二段:*___M___*
第三段:*zzzzzzMzzzz*

补充说明

  • 一定要启用enabledelayedexpansion(延迟扩展),否则在for循环里无法正确读取和修改变量
  • 替换用的特殊字符要选原字符串里绝对没有的,避免误分割;如果不确定,可以先检查原字符串是否包含该字符,或者用更冷门的符号比如£、§

内容的提问来源于stack exchange,提问作者Анна Кен

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:49:09