从 CSV 文件中删除选定的字段

Removing selected fields from a CSV file

我有包含 79 个字段的 CSV 文件。但我只需要其中的 14 个字段。所以我需要生成一个包含这 14 个字段的 CSV 文件。这是日常流程,需要安排。 我创建了一个批处理文件来使用以下命令执行此操作。

FOR /f "tokens=1,7,17,18,28,29,31,34,39,61,62,66,71,73 delims=," %%B in (C:\Users\c6372\Desktop\xmltocsv\Fulldata_withheaders.csv) do @echo %%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K,%%L,%%M,%%N,%%O>> C:\Users\c6372\Desktop\xmltocsv\Requireddata_withheaders.csv

但问题是,批处理文件中的 FOR 循环只能工作到 31 个字段。但是我有 79 个字段。我了解到,如果我们想处理超过 31 个字段,我们应该使用嵌套 for 循环。我尝试过这个。但它不起作用。谁能帮帮我。

提前致谢。

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q35592993.txt"
SET "filename2=%destdir%\q35592993out.txt"
FOR /f "usebackq tokens=1,7,17,18,28,29,* delims=," %%B in ("%filename1%") do (
 for /f "tokens=2,5,10,29,* delims=," %%I in ("%%H") do (
  for /f "tokens=3,4,8,13,15 delims=," %%N in ("%%M") do (
   echo %%B,%%C,%%D,%%E,%%F,%%G,%%I,%%J,%%K,%%N,%%O,%%P,%%Q,%%R>> "%filename2%"
  )
 )
)

GOTO :EOF

您需要更改 sourcedir,destdir,filename1andfilename2` 的设置以适合您的情况。我使用了适合我的系统的名称。

我使用了一个名为 q35592993.txt 的文件,其中包含一些用于测试的虚拟数据。

诀窍是使用标记 *,这意味着“最后一个明确提及的标记之后的其余行。”