返回列表 发帖
@echo off
setlocal enabledelayedexpansion
set "str="
for /f "delims=" %%a in (a.txt) do (
    set "str=!str!%%a"
)
echo !str!
echo.
echo 下面把"他娘的"换成TND。
echo ------------------------------------------------------------------
set "nstr=!str:他娘的=TND!"
echo !nstr!
echo ------------------------------------------------------------------
echo.
echo 下面把"他娘的"去掉。
echo ------------------------------------------------------------------
set "nstr1=!str:他娘的=!"
echo !nstr1!
echo ------------------------------------------------------------------
pauseCOPY
好像写得有点繁,呵呵。
问个问题:批处理中有对文本进行进行换行的常量吗?如VB中有vbcrlf。
进步怎么这么慢呢?

TOP

答:
@echo off
setlocal enabledelayedexpansion
echo =======替换版==========
for /f %%a in (a.txt) do (
   set a=%%a
   set a=!a:他娘的=TND!
   echo !a!
)
echo.
echo =======去除版==========
for /f %%a in (a.txt) do (
   set a=%%a
   set a=!a:他娘的=!
   echo !a!
)
pause>nulCOPY
效果:
[attach]2728[/attach]

======================
end;

TOP

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%a in ( a.txt ) do (
set ti1=%%a
set "ti=!ti1:他娘的=TND!"
echo !ti! >>b.txt
)
del a.txt
ren b.txt a.txt
for /f "tokens=*" %%a in ( a.txt ) do (
set ti1=%%a
set "ti=!ti1:TND=!"
echo !ti! >>b.txt
)
del a.txt
ren b.txt a.txt

TOP

不知道还能再精简吗?

@echo off
for /f %%i in (a.txt) do (
    set o=%%i
    setlocal enabledelayedexpansion
    set "s1=!s1!!o:他娘的=TND!"      
    set "s2=!s1:TND=!"   
)
echo !s1!
echo !s2!
pause>nulCOPY
有点遗憾是没能实现换行显示!还请各位前辈赐教。。。

TOP

多谢defanive前辈指教,实现了换行的功能。

@echo off
setlocal enabledelayedexpansion
set n=^
for /f %%i in (a.txt) do (
    set o=%%i
    set "s1=!s1!!o:他娘的=TND!!n!"      
    set "s2=!s1:TND=!"   
)
echo !s1!
echo !s2!
pause>nulCOPY
不过原理不是很清楚只是依葫芦画瓢,所以希望知道原理的前辈给晚辈详细讲解一番,晚辈在此先谢过了。。。

TOP

这样也可以

<1>@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%i in (a.txt) do (
set "var=%%i"
echo !var:他娘的=TND!)
pause
<2>@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%i in (a.txt) do (
set "var=%%i"
echo !var:他娘的=!)
pause

TOP

@echo off&setlocal EnableDelayedExpansion
for %%i in (你他娘的是谁?他娘的我不告诉你。 你他娘的到底是谁?我他娘的还就不告诉那个他娘的你。) do (
set var1=%%i
set var2=!var1:他娘的=TND!
echo !var2!
set var2=!var1:他娘的=!
echo !var2!
)
pauseCOPY

TOP

@echo off
setlocal enabledelayedexpansion
for /f %%i in (a.txt) do (
set a=%%i
set a=!a:他娘的=tnd!
echo !a!
)
for /f %%i in (a.txt) do (
set a=%%i
set a=!a:他娘的=!
echo !a!
)
endlocal
pauseCOPY

TOP

@echo off
setlocal EnableExtensions
setlocal EnableDelayedExpansion
for /f %%a in (bat02.txt) do (
        set str=%%a
        echo !str:他娘的=TND!
)COPY

[ 本帖最后由 mac007cn 于 2010-12-27 14:46 编辑 ]

TOP

@echo off&setlocal enabledelayedexpansion
for /l %%i in (1 1 2) do (
for /f %%a in (a.txt) do (
     set /a n+=1
     set k=%%a
     set b=!k:~,1!
     set c=TND
     if "!n!"=="1" (
        set d=!k:~4,3!
        set e=!k:~-6!
        if "%%i"=="1" (
           echo !b!!c!!d!!c!!e!
        ) else (
           echo !b!!d!!e!
        )
     ) else (
        set d=!k:~4,6!
        set e=!k:~-12,7!
        set f=!k:~-2!
        if "%%i"=="1" (
           echo !b!!c!!d!!c!!e!!c!!f!
        ) else (
           echo !b!!d!!e!!f!
        )
     )
)
pause>nul
)
pause>nulCOPY
only the strong survive!

TOP

@echo off&setlocal enabledelayedexpansion
for /f %%a in (a.txt) do (
    set str=%%a
    set str=!str:他娘的=TND!
    echo !str!
)
pause>nul
for /f %%a in (a.txt) do (
    set str=%%a
    set str=!str:他娘的=!
    echo !str!
)
pause>nulCOPY
only the strong survive!

TOP

@echo off
setlocal enabledelayedexpansion
for /f %%i in (1.txt) do (
set a=%%i
set b=!a:他娘的=TND!
echo !b!
)
pause

TOP

复杂啊。。有点不懂, 努力。。

TOP

第2题解答
@echo off
:字符替换练习题
echo 解答替换"他娘的"为"TND"
set "a=你他娘的是谁?他娘的我不告诉你。"
set "b=你他娘的到底是谁?我他娘的还就不告诉那个他娘的你。"
echo %a:他娘的=tnd%&echo. &echo %b:他娘的=tnd%&echo 按任意键获取第2结果&pause>nul
echo.
echo %a:他娘的=%&echo. &echo %b:他娘的=%&echo 按任意键结束本题&pause>nulCOPY

TOP

1# wxcute
@echo off&SetLocal EnableDelayedExpansion
For /f "delims=" %%i in (1.txt) do (Set a=%%i
Set a=!a:他娘的=tnd!
Echo !a!)
pauseCOPY
@echo off&SetLocal EnableDelayedExpansion
For /f "delims=" %%i in (1.txt) do (Set a=%%i
Set a=!a:他娘的=!
Echo !a!)
pauseCOPY

TOP

返回列表