从.csv文件中删除列的批处理脚本

时间:2017-10-03 08:34:35

标签: windows csv batch-file

我有一个超过20列的.csv文件,我希望删除第5列,并保存结果。

使用';'作为分隔符。

这是我相信最接近预期结果的东西,我看了很多其他类似的线程,但没有设法让任何工作。

    @ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
(
 FOR /f "delims=" %%a IN (input.csv) DO (
  SET "line=%%a"
  SET "line=!line:;= ; !"
  FOR /f "tokens=1,2*delims=;" %%p IN ("!line!") DO (
   SET "line=%%p;%%r"
   SET "line=!line: ; =;!"
   ECHO(!line!
  )
 )
)>output.csv

GOTO :EOF

我也试过这个看看它是否有效,不是所有行都是空的

@echo off>output.csv
cls
setlocal 

for /f "tokens=1-4* delims=," %%1 in (input.csv) do (
    echo %%1,%%2,%%3,%%5>>fourcol.csv
)
type output.csv

这是带有输入文件类型第一行的标题。

CA      CB          Libelle   PV HT     Qt Stock    Family  ...
AR00145 242719258   EFIP7P       5          (blank) (blank) ...
AR00176 764776562   MI7ROSE      3          (blank) (blank) ...
AR00261 3.70072E+12 EA52016      3          (blank) (blank) ...

分隔符是;什么是空白必须保持空白。 以上示例来自Excel以尝试使其更全面,使用记事本打开时的实际形式是

CA;CB;...
AR00145;242719258;...

感谢您的帮助!

enter image description here

1 个答案:

答案 0 :(得分:0)

此问题的解决方案位于下面显示的批处理文件中。我运行批处理文件并输入输入和输出文件作为程序正常工作的示例,并截取屏幕截图以尝试使其更全面。

enter image description here