我有80多个唯一命名的.csv文件,我需要从中删除前17行。我是刚开始编写批处理脚本的人,但想借此机会学习。
当我将文件重命名为test.csv时,我已经能够使该示例代码适用于单个文件,但是如果可以使用的文件名带有“通配符”,则将是首选方法。
@echo off
set "csv=test.csv"
more +17 "%csv%" >"%csv%.new"
move /y "%csv%.new" "%csv%" >nul
文件本身已更新为不包含前17行,并在启动时重命名。
答案 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的答案(如果它可以解决您的问题)。