标题: [文件操作] 批处理如何保留空行空格的基础上,前面去除掉行号,同时对字符串进行替换 [打印本页]
作者: coliooo 时间: 2021-11-8 15:44 标题: 批处理如何保留空行空格的基础上,前面去除掉行号,同时对字符串进行替换
求助各位大佬,现有一个a.txt文本,其中的内容为:
0051ABC 0051XYZ
0051ABC 0051XYZ
0051ABC 0051XYZ
0051ABC 0051XYZ
其中前面有4个空行,现在有个问题,要将文本中的"ABC"换成“123”,“XYZ”换成“AFK”,然后要跟原来的文本一样,空格跟空行依然保留
这边是我写的bat文件- @echo off
- setlocal enabledelayedexpansion
-
- for /f "delims=" %%b in ('findstr /n .* a.txt') do (
- set "str=%%b"
- set "str=!str:ABC=123!"
- set "str=!str:XYZ=AFK!"
-
- >>"a.txt" echo,!str!
- )
- pause
复制代码
我这边执行完bat文本是这样的
0051ABC 0051XYZ
0051ABC 0051XYZ
0051ABC 0051XYZ
0051ABC 0051XYZ1:
2:
3:
4:
5: 0051123 0051AFK
6:
7:
8: 0051123 0051AFK
9: 0051123 0051AFK
10: 0051123 0051AFK
如何才能将原来的文本覆盖掉,并去除前面的行号,实现要求,求助各位大佬,感谢!!!
作者: coliooo 时间: 2021-11-8 16:08
有木有大佬,帮小弟看下
作者: qixiaobin0715 时间: 2021-11-8 16:22
本帖最后由 qixiaobin0715 于 2021-11-8 16:33 编辑
- @echo off
- setlocal enabledelayedexpansion
- (for /f "delims=" %%a in ('findstr /n .* a.txt') do (
- set "str=%%a"
- set "str=!str:ABC=123!"
- set "str=!str:XYZ=AFK!"
- echo,!str:*:=!
- ))>New.txt
- pause
复制代码
作者: coliooo 时间: 2021-11-8 16:30
回复 3# qixiaobin0715
感谢大佬,我执行完,前面的空行依然不存在,有没有保留空行的方法
作者: qixiaobin0715 时间: 2021-11-8 16:34
回复 4# coliooo
代码已修改。
作者: coliooo 时间: 2021-11-8 18:29
回复 5# qixiaobin0715
感谢大佬 谢谢你
作者: coliooo 时间: 2021-11-8 20:26
回复 3# qixiaobin0715
后面的 !str:*:=! 这个是什么意思,大佬可以解释下吗,这边没懂
作者: qixiaobin0715 时间: 2021-11-8 20:31
删除变量str第一个冒号及其前面的所有字符。
作者: Batcher 时间: 2023-7-27 18:06
回复 3# qixiaobin0715
保留空行和保留英文感叹号-方法1.bat- @echo off
- cd /d "%~dp0"
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "1.txt"') do (
- set "str=%%b"
- setlocal enabledelayedexpansion
- if "%%b" neq "" (
- set "str=!str:ABC=123!"
- set "str=!str:XYZ=AFK!"
- )
- echo,!str!
- endlocal
- ))>"2.txt"
复制代码
保留空行和保留英文感叹号-方法2.bat- @echo off
- cd /d "%~dp0"
- (for /f "delims=" %%a in ('findstr /n .* "1.txt"') do (
- set "str=%%a"
- setlocal enabledelayedexpansion
- set "str=!str:ABC=123!"
- set "str=!str:XYZ=AFK!"
- echo,!str:*:=!
- endlocal
- ))>"2.txt"
复制代码
作者: qixiaobin0715 时间: 2023-7-28 08:42
回复 9# Batcher
谢谢分享!!!
作者: hfxiang 时间: 2023-7-28 09:31
回复 1# coliooo
将文件以ANSI编码保存为1.txt,可用第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )实现:- gawk "{gsub(/ABC/,\"123\");gsub(/XYZ/,\"AFK\")}1" 1.txt>2.txt
复制代码
作者: hfxiang 时间: 2023-7-28 09:37
回复 1# coliooo
将文件以 ANSI 编码保存为 1.txt, 可用第 3 方工具 sed( http://bcn.bathome.net/tool/4.8/sed.exe )实现写回原文件:- sed -i "s/ABC/123/;s/XYZ/AFK/" 1.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |