灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2981回复:0

批处理 保留空行替换字符串

楼主#
更多 发布于:2013-06-08 14:18
@echo off 
:: 保留空行替换字符串 
:: 当行首有冒号时会抛掉最开始的几个连续冒号(这个问题可以解决) 
:: 会忽略以分号开头的行 
:: 不能正确处理感叹号(因为启用了变量延迟) 
:: 
::
set file= 
set /p file= 请把要处理的文件拉到本窗口: 
set "file=%file:"=%" 
for %%i in ("%file%") do set "file=%%~fi" 
echo. 
set replaced= 
set /p replaced= 请输入即将被替换的内容: 
echo. 
set all= 
set /p all= 请输入替换字符串: 
cd.>"%file%_tmp.txt" 
setlocal enabledelayedexpansion 
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%file%"') do ( 
set str=%%j 
if not "!str!"=="" set "str=!str:%replaced%=%all%!" 
>>"%file%_tmp.txt" echo.!str! 
) 
copy "%file%" "%file%_bak.txt" >nul 2>nul 
move "%file%_tmp.txt" "%file%" 
start "" "%file%"

喜欢0 评分0
游客

返回顶部