File 如何在批处理文件中解析带有特殊分隔符的文件?

File 如何在批处理文件中解析带有特殊分隔符的文件?,file,parsing,batch-file,delimiter,File,Parsing,Batch File,Delimiter,我想使用批处理解析一个类似以下内容的文件: a: string_containing_various_characters,.:and spaces/1 b: string_containing_various_characters,.:and spaces/2 c: string_containing_various_characters,.:and spaces/3 d: string_containing_various_characters,.:and spaces/4 e: strin

我想使用批处理解析一个类似以下内容的文件:

a: string_containing_various_characters,.:and spaces/1
b: string_containing_various_characters,.:and spaces/2
c: string_containing_various_characters,.:and spaces/3
d: string_containing_various_characters,.:and spaces/4
e: string_containing_various_characters,.:and spaces/5
f: string_containing_various_characters,.:and spaces/6
g: string_containing_various_characters,.:and spaces/7
我需要提取“a:”、“b:”、“c:”等后面的每个字符串。。。我不能使用空格作为分隔符,因为字符串中可以有空格。唯一一件永远正确的事情是,第一条“:”永远是我想划清界限的地方

有什么想法吗?

试试这个:

for /f "tokens=1*" %%a in (file) do for /f "delims=:" %%c in ("%%~b") do echo %%c

谢谢,这很有效。想解释一下原因吗?我意识到我很难对付上校。我的下一步是创建包含字符串的变量,名称是冒号前一行的一部分,如:a=“string\u包含各种字符,:和空格/1”。我想删除%%a的最后一个字符,语法为%variable:StrToFind=NewStr%,但由于StrToFind是“:”,因此它会创建一个双冒号。有什么想法吗?不需要两个for循环
for/f“tokens=1*delims=:”(文件)中的%%a设置“%%a=%%b”
@endro,谢谢更新。但是,如果我想要a=string:
for/f“tokens=1*”%%a in(Request_Header.txt)do for/f“delims=:”%%c in(“%%a”)do set%%c=%%b
,这是正确的。