找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30477|回复: 12

[文本处理] 批处理如何将txt文件每行开头前4个字符替换成指定字符?

[复制链接]
发表于 2012-4-21 21:32:15 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-10-10 12:43 编辑

比如有一个文件里面是这样
XXXX111
XXXX222
XXXX333
我想将它转成这样:
A111
A222
A333
真心求教!
发表于 2012-4-21 22:17:55 | 显示全部楼层
  1. sed "s/^..../A/" a.txt >b.txt
复制代码
发表于 2012-4-21 22:43:32 | 显示全部楼层
俺是新手菜鸟,所以贴出俺的简陋代码,没有啥高深技术,但自己试验过了,可以达到楼主的要求。楼主试试吧。
  1. @echo off & setlocal EnableDelayedExpansion
  2. for /f %%i in (a.txt) do (
  3.   set a=%%i
  4.   echo A!a:~4,3!>>b.txt
  5. )
  6. pause>nul
复制代码
发表于 2012-4-21 22:46:30 | 显示全部楼层
不好意思,没看清要求,为了增强通用性,请把第四行代码中的",3”去掉,看准哦,前面有个逗号。
发表于 2012-4-22 00:33:20 | 显示全部楼层
回复 4# xiaopo



你试试文件内容是这样的时候会如何:
XXXX!!!
XXXXon
XXXXoff
发表于 2012-4-22 08:35:13 | 显示全部楼层
  1. @echo off & setlocal EnableDelayedExpansion
  2. for /f "tokens=* delims=" %%i in (a.txt) do (
  3.     set "n=%%i"
  4.     call set "n=%%n:!n:~0,4!=A%%"
  5.     echo.!n!
  6. )pause>null
复制代码
话说特殊字符。。。除了叹号。。。
发表于 2012-4-22 18:53:48 | 显示全部楼层
要考虑特殊字符,setlocal enabledelayedexpansion貌似不能放在开头
  1. @echo off
  2. (for /f "delims=" %%a in (a.txt) do (
  3.   set "str=%%a"
  4.   setlocal enabledelayedexpansion
  5.   echo A!str:~4!
  6.   endlocal
  7. ))>b.txt
复制代码
发表于 2012-4-22 19:30:16 | 显示全部楼层
回复 7# apang


    敢问,这个位置为什么会影响感叹号的输出,能否详细介绍下?
发表于 2012-4-22 21:47:42 | 显示全部楼层
回复 8# xiaopo

如果在set "str=%%a"之前开启变量延迟,%%a所包含的感叹号会被当成变量引用符号而被脱掉。
发表于 2012-4-22 22:06:00 | 显示全部楼层
回复 9# apang


    哦,原来是这样,多谢朋友,
发表于 2012-4-22 22:49:09 | 显示全部楼层
发表于 2012-4-23 18:27:05 | 显示全部楼层
回复 11# gawk


    多谢,善于运用论坛的搜索功能,学习了。
发表于 2012-4-24 10:39:18 | 显示全部楼层
回复 7# apang

谢谢高手,又学了一招。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 21:10 , Processed in 0.016630 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表