bat批处理文本内容替换脚本的写法

要求:
查找开头为AAAA的行,把整行替换为BBBB
查找开头为CCCC的行,把这行的第一个, (半角逗号)后面的内容替换为DDDD。
然后,输出时固定用某一种编码,UTF-8或ANSI的最好。

建议借助sed这类流编辑命令行(如果没有可百度下载,我的版本是:sed.exe 4.1.4),效率、兼容性都很高:

@echo off
sed "s/^AAAA.*/BBBB/;/^CCCC/s/\(,\).*/\1DDDD/" 1.txt
pause

当然纯批处理也不是没办法,只不过各方面稍逊不少:

@echo off
SetLocal EnableDelayedExpansion
for /f "delims=" %%i in ('type 1.txt') do (
set "x=%%i"
if "!x:~,4!"=="AAAA" (set "x=BBBB") else (
if "!x:~,4!"=="CCCC" for /f "delims=," %%i in ("%%i") do set "x=%%i,DDDD"
)
echo;!x!
)
pause
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-02
你好!
@echo off&setlocal enabledelayedexpansion
for /f "" %%i in ('getmac /nh') do (
for /f "delims=" %%j in (1.txt) do (
set str=%%j
if "!str:~0,3!"=="555" (
echo %%i>>tmp.txt
) else (
echo %%j>>tmp.txt
)
)
exit
)
默认只获取第一块网卡MAC赞同1| 评论
相似回答