使用批处理脚本仅读取分隔文件中的特定列

匿名的

我每次都试图读取具有不同文件结构的 csv 文件。我想创建一个批处理脚本来仅根据列名(而不是列位置,因为它每次都发生变化)获取特定列,并仅使用这些特定列创建一个新的分隔文件。例如,我们有以下 csv 文件数据:

Subject,ID,Error

S1,a_11,error1

S2,b_11,error2

ID 列可以出现在文件中的任何位置,但 Error 始终是最后一列。欢迎任何建议。我对批处理脚本的了解也很少。非常感谢您的帮助。提前致谢!

行动

你的问题很不完整。缺少几个细节,所以我必须猜测它们才能编写一个有效的批处理文件:

@echo off
setlocal EnableDelayedExpansion

if "%~1" equ "" echo Usage: %0 column names ... & goto :EOF

rem Read the header and extract column names
set /P "header=" < test.csv
set "n=0"
for %%a in (%header%) do (
   set /A "n+=1, column[%%~a]=n"
)

rem Assemble output line from column names given in parameters
set "output="
:nextCol
   if not defined column[%~1] echo Not such column: "%~1" & goto :EOF
   set "output=!output!,%%!column[%~1]!"
   shift
if "%~1" neq "" goto nextCol

rem Generate output
for /F "tokens=1-%n% delims=," %%1 in (test.csv) do echo %output:~1%

这些是缺失的细节:

  • 输出文件中的“特定列”在批处理文件参数中给出。
  • 输入文件可能有多少列?超过 9 个?超过26?当前代码最多只能输出到输入文件的第 9 列。
  • 数据的列中是否包含用引号括起来的逗号(如“Bill,Smith”、“ID32”、“Error1”)或空列(如 S1,,error1)?当前代码无法处理这些情况。

这些点可以在后验版本中更改...

输出示例(假设批处理文件名为 ExtractColumns.bat):

C:\Users\Antonio\Tests> ExtractColumns.bat Id,Subject
ID,Subject
a_11,S1
b_11,S2

无论如何,你的“问题”只是一个代码请求,所以如果你想获得进一步的支持,你应该表现出你的努力,并在发布的代码上发布关于特定疑问的问题......

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从批处理脚本中读取文件

来自分类Dev

使用批处理脚本,在文本文件中每行的特定列处写入文本

来自分类Dev

在批处理脚本中读取以空格分隔的单词

来自分类Dev

使用Windows批处理脚本在CSV文件中添加列

来自分类Dev

使用批处理脚本从json文件读取URL

来自分类Dev

如何在批处理中读取CSV文件特定列中的值?

来自分类Dev

如何在批处理中读取CSV文件特定列中的值?

来自分类Dev

尝试创建Windows批处理脚本,该脚本仅循环访问文件夹中的特定级别的目录

来自分类Dev

逐行读取文本文件,然后使用批处理脚本将其存储在数组中

来自分类Dev

如何使用批处理脚本跳过注释行以从文本文件中读取

来自分类Dev

使用批处理文件从 txt 文件中读取特定值

来自分类Dev

批处理脚本删除多个文件中的特定行

来自分类Dev

使用批处理脚本循环写入文件的特定行

来自分类Dev

使用批处理脚本循环写入文件的特定行

来自分类Dev

使用文件中的特定字符串跳过行-批处理脚本

来自分类Dev

通过批处理脚本从文本文件中读取特定的Word(第2行,Word 3)

来自分类Dev

使用批处理脚本仅打开文件夹中的非零文本文件

来自分类Dev

使用批处理脚本读取COM

来自分类Dev

使用批处理脚本提取文件中的路径列表

来自分类Dev

使用脚本在批处理文件中运行django shell

来自分类Dev

如何使用批处理脚本遍历目录中的文件

来自分类Dev

使用批处理脚本在目录中获取文件名

来自分类Dev

使用批处理脚本在文件中插入行

来自分类Dev

如何使用批处理脚本重命名仅与另一个目录中相同的文件

来自分类Dev

使用批处理列出特定文件夹中的文件

来自分类Dev

使用批处理脚本移动具有特定文件内容的特定文件

来自分类Dev

如何使用批处理复制文件中的特定字符

来自分类Dev

如何使用批处理在 .txt 文件中搜索特定短语

来自分类Dev

将文本文件中的特定行读取到批处理文件中的变量

Related 相关文章

  1. 1

    从批处理脚本中读取文件

  2. 2

    使用批处理脚本,在文本文件中每行的特定列处写入文本

  3. 3

    在批处理脚本中读取以空格分隔的单词

  4. 4

    使用Windows批处理脚本在CSV文件中添加列

  5. 5

    使用批处理脚本从json文件读取URL

  6. 6

    如何在批处理中读取CSV文件特定列中的值?

  7. 7

    如何在批处理中读取CSV文件特定列中的值?

  8. 8

    尝试创建Windows批处理脚本,该脚本仅循环访问文件夹中的特定级别的目录

  9. 9

    逐行读取文本文件,然后使用批处理脚本将其存储在数组中

  10. 10

    如何使用批处理脚本跳过注释行以从文本文件中读取

  11. 11

    使用批处理文件从 txt 文件中读取特定值

  12. 12

    批处理脚本删除多个文件中的特定行

  13. 13

    使用批处理脚本循环写入文件的特定行

  14. 14

    使用批处理脚本循环写入文件的特定行

  15. 15

    使用文件中的特定字符串跳过行-批处理脚本

  16. 16

    通过批处理脚本从文本文件中读取特定的Word(第2行,Word 3)

  17. 17

    使用批处理脚本仅打开文件夹中的非零文本文件

  18. 18

    使用批处理脚本读取COM

  19. 19

    使用批处理脚本提取文件中的路径列表

  20. 20

    使用脚本在批处理文件中运行django shell

  21. 21

    如何使用批处理脚本遍历目录中的文件

  22. 22

    使用批处理脚本在目录中获取文件名

  23. 23

    使用批处理脚本在文件中插入行

  24. 24

    如何使用批处理脚本重命名仅与另一个目录中相同的文件

  25. 25

    使用批处理列出特定文件夹中的文件

  26. 26

    使用批处理脚本移动具有特定文件内容的特定文件

  27. 27

    如何使用批处理复制文件中的特定字符

  28. 28

    如何使用批处理在 .txt 文件中搜索特定短语

  29. 29

    将文本文件中的特定行读取到批处理文件中的变量

热门标签

归档