use*_*179 23 windows split cmd batch-file
我正在尝试使用字符串(而不是字符)作为分隔符在批处理文件中拆分字符串.
该字符串的格式为:
string1 by string2.txt
Run Code Online (Sandbox Code Playgroud)
分隔符是by(是的,空格,单词'by',后跟空格).我想要的输出是:
string1
string2
Run Code Online (Sandbox Code Playgroud)
因此,基本上,通过分隔符将字符串拆分为2个部分,by并从第二个字符串中删除后缀.我怎样才能做到这一点?
Aac*_*ini 40
试试这个:
for /F "tokens=1,3 delims=. " %%a in ("%string%") do (
echo %%a
echo %%b
)
Run Code Online (Sandbox Code Playgroud)
也就是说,用空格或点分隔第一个和第三个标记......
Aac*_*ini 14
我最近发现了一个有趣的技巧,允许"将字符串拆分为字符串作为分隔符",所以我无法抗拒将其作为新答案发布在此处的诱惑.请注意"显然问题不准确.首先,string1和string2都可以包含空格.其次,string1和string2都可以包含&符号('&')".这种方法适用于新规范(在Stephan的答案下面发表评论).
@echo off
setlocal
set "str=string1&with spaces by string2&with spaces.txt"
set "string1=%str: by =" & set "string2=%"
set "string2=%string2:.txt=%"
echo "%string1%"
echo "%string2%"
Run Code Online (Sandbox Code Playgroud)
有关拆分方法的更多详细信息,请参阅此文章.
@ECHO OFF
SETLOCAL
SET "string=string1 by string2.txt"
SET "string=%string:* by =%"
ECHO +%string%+
GOTO :EOF
Run Code Online (Sandbox Code Playgroud)
上述 SET 命令将删除不需要的数据。结果显示在 + 之间以证明不存在空格。
公式:set var=%somevar:*string1=string2%
将向 var 分配 somevar 的值,并将 string1 之前的所有字符替换为 string2。set 命令中的引号可确保行上的任何杂散尾随空格不包含在分配的值中。