【问题标题】:Extract the first quoted string of each line of a text file提取文本文件每一行的第一个引号字符串
【发布时间】:2017-11-29 10:14:25
【问题描述】:

我想通读一个包含很多行的文本文件。 在每一行的开头,我在引号之间有一个字符串,然后是一个逗号,然后是其余的行,例如:

"CBL003","C3/C5 // <>SdcdUB","",0,1,"PfcdDT_gerergv","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",
"CBL004","C3<.<C7 // <>SqsxUB","",0,1,"PDzesdxT_esfdczec","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,""

我想要的是通读文件,并提取第一行并将其放入不同的文本文件中,并用它包含的行的第一个字符串命名。前任。: 在上面的例子中,我应该有一个文本文件 CBL003.txt,它包含:

"CBL003","C3/C5 // <>SdcdUB","",0,1,"PfcdDT_gerergv","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",

第二个文件文本 CBL004.txt 包含:

"CBL004","C3<.<C7 // <>SqsxUB","",0,1,"PDzesdxT_esfdczec","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,""

我已经有一个可以读取每一行的代码:

FOR /F "tokens=*" %%a IN (C:\SourceFile.txt) DO (
    ECHO %%a 
)

但我不知道如何提取每行的第一部分

【问题讨论】:

  • 您可以尝试使用正则表达式 \"(.*?)\" 并返回第一个匹配项,前提是您的数据始终位于字符串的开头。

标签: windows batch-file cmd text-extraction


【解决方案1】:

您需要tokens=1,因为您希望将%%a 设置为仅第一个标记,并且您需要delims=, 将逗号指定为分隔符。如果需要,您可以使用%%~a 删除引号。输入for /? 寻求帮助。

FOR /F "tokens=1 delims=," %%a IN (C:\SourceFile.txt) DO (
    ECHO %%~a
)

【讨论】:

  • 这就是我想要的,谢谢。所以 tokens=1 意味着我只想要我的分隔符之前的第一个字符串。所以对于 %%~a,每当我们想要不带引号的提取时,我们添加 ~ 对吗?
  • 是的,通常引号放在包含空格的文件名周围,而 ~ 用于将它们从变量中删除。但它不必是文件名,因为它适用于任何字符串。
猜你喜欢
  • 1970-01-01
  • 2014-09-01
  • 2014-09-23
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多