批处理脚本开发求助:移除指定前缀行并保存至新路径
批处理脚本开发求助:移除指定前缀行并保存至新路径
我最近写批处理脚本时碰到个难题,想请大家帮忙支招:我需要把文本文件里所有以19:、20:、21:、22:开头的行删掉,再把处理后的文件保存到另一个目录里。
我自己试了这条命令:
findstr /v /b "19:" SAT*.asc > new.asc
结果发现它只删掉了以19:开头的行,而且还把文件名(比如SAT240101.ASC,这里的*是日期)加到了每一行前面,完全不是我想要的效果,有没有办法解决呀?
解决方案参考
要实现需求,咱们需要解决两个核心问题:同时匹配多个行首前缀,以及避免文件名被自动添加到行前。这里提供一个可行的脚本示例:
@echo off set "output_dir=处理后文件" rem 先创建输出目录,如果不存在的话 if not exist "%output_dir%" mkdir "%output_dir%" rem 遍历所有SAT开头的.asc文件 for %%f in (SAT*.asc) do ( rem 过滤掉指定前缀的行,输出到目标目录 findstr /v /b /c:"19:" /c:"20:" /c:"21:" /c:"22:" "%%f" > "%output_dir%\%%f" ) echo 所有文件处理完成!
关键参数说明:
/v:反向匹配,保留不满足匹配条件的行(也就是删掉我们指定前缀的行)/b:指定匹配的是行首的内容,避免误删中间包含这些字符串的行/c:"xxx":每个/c参数对应一个要匹配的字符串,这样就能同时处理四个前缀- 使用
for循环逐个处理文件:这样findstr只会处理单个文件,就不会自动在每行前添加文件名了
备注:内容来源于stack exchange,提问作者Travis
相关产品推荐
相关产品推荐

