[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]大神帮忙做个批处理替换前十五行指定字符串

我有多个后缀为NC的文本,想把H01改成H00(只存在前十五行)并把以原文本名字输出,我自己做的是查找全文再替换H01,查找速度度慢,想大佬们帮帮忙
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 22# flashercs


    谢谢,已经完美了,我把它转成exe并使用了

TOP

回复 21# andywf
  1. @echo off
  2. cd /d "%~dp0"
  3. sed.exe -i -E -e "1,15{/^(M204 H1 D1|M24|M26|G43 H1)\r?$/d;s/H01/H00/g;}" *.nc *.ptp
  4. pause
复制代码
1

评分人数

微信:flashercs
QQ:49908356

TOP

回复 19# flashercs


    如果存在两种后缀文件,怎么修改呢?例如有后缀是NC ,和PTP,修改内容不变,谢谢

TOP

回复 19# flashercs


    成了,谢谢,牛逼克拉斯

TOP

  1. @echo off
  2. cd /d "%~dp0"
  3. sed.exe -i -E -e "1,15{/^(M204 H1 D1|M24|M26|G43 H1)\r?$/d;s/H01/H00/g;}" *.nc
  4. pause
复制代码
论坛下载sed.exe
1

评分人数

微信:flashercs
QQ:49908356

TOP

回复 16# qixiaobin0715


    文件有几万行,只想删除前面的M204 H1 D1,把 H01替换成H00


「1.NC」https://www.aliyundrive.com/s/gYZG4gr6NW2
这只是其中一个文件

TOP

回复 16# qixiaobin0715


    会把全部内容删除

TOP

修改11楼第6行代码不知是否可提高一点速度:
  1.     (for /f "usebackq delims=" %%a in ("%%i") do (
复制代码

TOP

最好能在网盘上发几个大文件,有利于代码测试,看看能否有人帮你优化。

TOP

回复 11# flashercs


    大神,因为有些文件比大大,替换速度很慢,有没有什么办法优化

TOP

本帖最后由 andywf 于 2022-6-12 23:13 编辑

@echo off
setlocal enabledelayedexpansion
set "v1=M204 H1 D1"
set "v2=G43 H1"
set "v3=M24"
set "v4=M26"
for %%a in (*.ptp) do (
findstr /i /v /c:"!v1!" "%%~a">new.tmp
findstr /i /v /c:"!v2!" new.tmp>"%%~a"
findstr /i /v /c:"!v3!" "%%~a">new.tmp
findstr /i /v /c:"!v4!" new.tmp>"%%~a"
del new.tmp)
这样的代码批处理很快,然后再加上替换HO1成H00(限于前十五行)

TOP

回复 11# flashercs


    十分感谢大神的付出,能否再加多删除几行的命令M204 H1 D1,M24,M26,G43 H1,这几行是独立成行,命令是先删除这几行(存在前十五行内),然后再替换H01成H00(也是前15行内),以原来文件名输出

TOP

  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /b /s /a-d *.NC') do (
  5.     set "n=0"
  6.     (for /f "delims=" %%a in ('type "%%i"') do (
  7.         set /a n+=1
  8.         if !n! leq 15 (
  9.             set "foo=%%a"
  10.             set "foo=!foo:H01=H00!"
  11.             echo,!foo!
  12.         ) else echo,%%a
  13.     ))>"%%~fi._"
  14.     move "%%~fi._" "%%~fi"
  15. )
复制代码
1

评分人数

微信:flashercs
QQ:49908356

TOP

回复 9# LJY4.0


    谢谢大佬,试了下,会把全部内容删除😂

TOP

返回列表