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

[ 新手习题 2 ] 批处理字符替换

[复制链接]
发表于 2014-9-29 15:46:06 | 显示全部楼层
::===========================================
::有一文本内容如下:
::a.txt
::你他娘的是谁?他娘的我不告诉你。
::你他娘的到底是谁?我他娘的还就不告诉那个他娘的你。
::论坛可是不允许用不文明用语的,请大家先把“他娘的”换成“TND”输出一遍,最后去掉这个不雅的词再输出一遍。
::===========================================
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (a.txt) do (set num=%%i&&set num=!num:他娘的=TND!&&echo !num!)
pause>nul
for /f "tokens=*" %%i in (a.txt) do (set num=%%i&&set num=!num:他娘的=!&&echo !num!)
pause>nul
发表于 2014-11-2 22:37:10 | 显示全部楼层
setlocal enabledelayedexpansion

set n=1

for /f %%i in (1.txt) do (

        set str=%%i

        set str1=!str:他娘的=TND!

        if !n! equ 1 (echo !str1!>1.txt&set /a n+=1) else echo !str1!>>1.txt
)

pause
发表于 2014-11-7 07:57:13 | 显示全部楼层
本帖最后由 shelluserwlb 于 2014-11-7 07:58 编辑
  1. @echo off
  2. for /f "tokens=*" %%a in (a.txt) do (
  3. set str=%%a
  4. call set str=%%str:他娘的=TND%%
  5. call echo %%str%%
  6. )
  7. echo -------------------------------
  8. for /f "tokens=*" %%a in (a.txt) do (
  9. set str=%%a
  10. call set str=%%str:他娘的=%%
  11. call echo %%str%%
  12. )
  13. echo.&pause
复制代码
上面的代码利用call实现变量延迟赋值的效果。
发表于 2014-12-25 10:32:32 | 显示全部楼层
回复 4# sylovanas

说实话,我对debug这个命令挺好奇的,不过鉴于电脑装的是win764位的,没有这个命令,一直以来都是持观望态度,但是这个除错功能太有用了,有时不知道哪里出了问题,都要来回排查好多遍。。。
发表于 2015-2-25 16:18:25 | 显示全部楼层

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%i in (a.txt) do (
  3. set e=%%i&set e=!e:他娘的=TND!
  4. echo !e!)
  5. pause>nul

  6. @echo off&setlocal enabledelayedexpansion
  7. for /f "tokens=*" %%i in (a.txt) do (
  8. set e=%%i&set e=!e:他娘的=!
  9. echo !e!)
  10. pause>nul
复制代码
发表于 2015-5-1 11:54:45 | 显示全部楼层
  1. @echo off&setlocal EnableDelayedExpansion %关闭回显,设置变量延迟%
  2. set sou_str=他娘的 ::设置想要替换的字符
  3. set dis_str=tnd ::设置替换后的字符

  4. rem 开始进行批量替换
  5. for /f %%i in (test.txt) do (
  6.         set str=%%i
  7.         set str=!str:%sou_str%=%dis_str%!
  8.         echo !str!
  9. )
复制代码
发表于 2015-5-1 12:11:27 | 显示全部楼层
回复 81# dizimotong
自己测试后,发现结果有问题 。自我修改一下
  1. echo off&setlocal EnableDelayedExpansion %关闭回显,设置变量延迟%
  2. rem 该批处理用于批量替换字符



  3. rem 开始进行批量替换
  4. for /f %%i in (test.txt) do (
  5.         set str=%%i
  6.         set str=!str:他娘的=tnd!
  7.         echo !str!
  8. )
复制代码
发表于 2015-10-20 16:00:36 | 显示全部楼层

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%I in (a.txt) do (
  4.     set text=%%I
  5.     echo !text:他娘的=TND!
  6. )
  7. for /f "tokens=*" %%I in (a.txt) do (
  8.     set text=%%I
  9.     echo !text:他娘的=!
  10. )
复制代码
发表于 2015-10-21 23:45:28 | 显示全部楼层
python练手
  1. f=open("aa.txt","r")
  2. txt=f.read()
  3. print("这是原文,楼主说这不文明:\r\n",txt)
  4. rtxt=txt.replace("他娘的","TND")
  5. print("→_→替换掉了:\r\n",rtxt)
复制代码

  1. 这是原文,楼主说这不文明:

  2. 你他娘的是谁?他娘的我不告诉你。
  3. 你他娘的到底是谁?我他娘的还就不告诉那个他娘的你。
  4. →_→替换掉了:

  5. 你TND是谁?TND我不告诉你。
  6. 你TND到底是谁?我TND还就不告诉那个TND你。
复制代码
发表于 2016-3-31 21:44:11 | 显示全部楼层
一开始忘记变量延迟了。
另,7楼方法win7下是不是没用?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%i in (a.txt) do (
  4.         set t=%%i
  5.         set w=!t:他娘的=TND!
  6.         echo !w!)
  7.         echo;
  8.         echo 按空格查看第二输出结果
  9.         pause>nul
  10. echo;
  11. echo 去掉不雅词
  12. echo;
  13. for /f %%i in (a.txt) do (
  14.         set t=%%i
  15.         set w=!t:他娘的=!
  16.         echo !w!)
  17.         pause>nul
复制代码
发表于 2016-4-1 06:41:17 | 显示全部楼层
  1. #=
  2. julia替换TND.jl
  3. http://bbs.bathome.net/thread-2462-1-1.html
  4. 2016年4月1日 06:18:12 codegay
  5. =#
  6. txt=open(readall,"test.txt")
  7. txt=replace(txt,"他娘的","TND")
  8. println(txt)
  9. txt=replace(txt,"TND","")
  10. print(txt)
复制代码
发表于 2016-4-17 19:43:11 | 显示全部楼层
@echo off
for /f "tokens=*" %%a in (a.txt) do (               
    SETLOCAL ENABLEDELAYEDEXPANSION   
    set var=%%a
    set newVar=!var:他娘的=TND!                    
    echo !newVar!
)
pause

2.@echo off
for /f "tokens=*" %%a in (a.txt) do (
    SETLOCAL ENABLEDELAYEDEXPANSION
    set var=%%a
    set newVar=!var:他娘的=!
    echo !newVar!
)
pause
发表于 2016-11-29 11:04:14 | 显示全部楼层
虽然代码烂但绝对原创

  1. @echo off


  2. setlocal enabledelayedexpansion

  3. set line=0

  4. for /f "tokens=1-4 delims=他娘的" %%i in (a.txt) do (

  5. set /a line+=1

  6. if !line! equ 1 echo %%iTND%%jTND%%k

  7. if !line! equ 2 echo %%iTND%%jTND%%kTND%%l

  8. )
  9. endlocal
复制代码
发表于 2017-2-24 19:07:28 | 显示全部楼层
感觉大家都是很牛的人
发表于 2017-12-31 23:37:13 | 显示全部楼层
@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%a in (a.txt) do (
  set file=%%a
  set b=!file:他娘的=TND!
  echo !b!>>b.txt
)
for /f "delims=" %%b in (b.txt) do (
  set name=%%b
  set c=!name:TND=!
  echo !c!>>b.txt
)
pause
新手代码,但一定是我自己写的,求指教,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 01:11 , Processed in 0.021144 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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