需要从.Csv文件一次读取一行使用.Bat并将令牌分配给变量

时间:2012-05-21 16:35:43

标签: csv batch-file readline

我正在尝试在需要最少后台进程的工作中实现自动化。通常我会使用C#,但这是有问题的,因为我自动化的一部分是扫描系统寻找正在运行的进程的测试过程。命令窗口很好,但除此之外的大多数事情都有问题。 作为开始这一系列测试的一部分,我试图找到一种方法来获取批处理文件,从.csv文件一次读取一行。每行包含4个值(当然用逗号分隔),这些值应放入变量中。第一个var将是测试编号。启动批处理文件时,我将提供一个测试编号作为arg,并希望它将收到的测试编号与从文件中读取的测试编号进行比较。如果匹配,继续测试。如果没有,请转到下一行并将该数据读入变量。 其他一切都非常简单,但我无法弄清楚如何让它以所描述的方式一次一行地读取和解析.csv文件。任何帮助,将不胜感激。

仅仅是为了获取信息,我很清楚如何在C#中执行此操作,并且我知道还有许多其他解决方案比批处理文件更好(更容易)。但是,在我们的情况下,使用这些解决方案的想法很少有特定的原因,所以我们试图用批处理文件去读旧学。

1 个答案:

答案 0 :(得分:2)

@echo off
rem Read theFile.csv and get 4 tokens separated by commas
for /F "tokens=1-4 delims=," %%a in (theFile.csv) do (
   rem Tokens read are placed in %%a, %%b, %%c and %%d replaceable parameters
   rem If first token is equal to first Batch file argument
   if %%a equ %1 (
      rem Continue testing here, ie
      echo %%a,%%b,%%c,%%d
   )
)