从 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,
filename1and
filename2` 的设置以适合您的情况。我使用了适合我的系统的名称。
我使用了一个名为 q35592993.txt
的文件,其中包含一些用于测试的虚拟数据。
诀窍是使用标记 *
,这意味着“最后一个明确提及的标记之后的其余行。”
我有包含 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,
filename1and
filename2` 的设置以适合您的情况。我使用了适合我的系统的名称。
我使用了一个名为 q35592993.txt
的文件,其中包含一些用于测试的虚拟数据。
诀窍是使用标记 *
,这意味着“最后一个明确提及的标记之后的其余行。”