通过批处理脚本从.CSV中删除行

时间:2019-04-10 14:21:34

标签: batch-file

我有80多个唯一命名的.csv文件,我需要从中删除前17行。我是刚开始编写批处理脚本的人,但想借此机会学习。

当我将文件重命名为test.csv时,我已经能够使该示例代码适用于单个文件,但是如果可以使用的文件名带有“通配符”,则将是首选方法。

@echo off
set "csv=test.csv"
more +17 "%csv%" >"%csv%.new"
move /y "%csv%.new" "%csv%" >nul

文件本身已更新为不包含前17行,并在启动时重命名。

2 个答案:

答案 0 :(得分:2)

尝试这样:

@echo off

for %%a in (*.csv) do (
    more +17 "%%a" >"%%a.new"
    move /y "%%a.new" "%%a" >nul
)

答案 1 :(得分:0)

以下是我的评论中提到的基于For /?输出的示例。

此命令直接在命令提示符下起作用:

For %A In (*.csv)Do @More +17 "%A">"%A.new"&&Move /Y "%A.new" "%A">Nul

这是批处理文件的版本:

@For %%A In (*.csv)Do @More +17 "%%A">"%%A.new"&&Move /Y "%%A.new" "%%A">Nul

以上命令与提供的其他答案几乎相同。唯一的“实际”差异是使用&&条件运算符,如果前一个命令Move成功,则该条件运算符仅应运行More命令。尽管More命令失败的可能性很小,但我仍然建议实现条件语句的安全性。 如果您不希望使用该功能,请随时选择SachaDee的答案(如果它可以解决您的问题)。