用批处理实现文本文件中指定字符串的替换 zz
生活随笔
收集整理的這篇文章主要介紹了
用批处理实现文本文件中指定字符串的替换 zz
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
| |||
| uglyfrog |
| ||
| 發(fā)帖: 249 積分: 0 注冊(cè): 2001-12-30 | 其實(shí)批處理也可以干很多事的,下面的批處理文件實(shí)現(xiàn)了對(duì)指定目錄下的特定文件類型中的字符串進(jìn)行替換的功能。雖然在unix或linux系統(tǒng)寫一條語(yǔ)句就能實(shí)現(xiàn),但在windows下用批處理也總比編一段程序方便些吧。
把以上內(nèi)容保存為replace.bat,然后在命令行下執(zhí)行cmd /v:on /c replace.bat 本例子實(shí)現(xiàn)了把c:/test目錄(包括子目錄)中所有txt文件中的aaa替換成bbb。 | ||
| zzzevazzz |
| ||
| 發(fā)帖: 275 積分: 0 注冊(cè): 2002-05-13 | 完全不行,。樓主你測(cè)試過(guò)沒有啊? 首先,對(duì)帶空格的文件無(wú)法正確運(yùn)行。 而且,“echo !TMP:%SCONTENT%=%DCONTENT%! >> %TMPFILE%”是什么意思? 被替換的文件都成這樣了: !TMP:aaa=bbb!?? !TMP:aaa=bbb!?? !TMP:aaa=bbb! --- Ph4nt0m Security Team http://ph4nt0m.org/ | ||
| uglyfrog |
| ||
| 發(fā)帖: 249 積分: 0 注冊(cè): 2001-12-30 | 不好意思,我所給出的bat只是簡(jiǎn)單演示了它具有這種功能。并沒有經(jīng)過(guò)太嚴(yán)格的測(cè)試。如果有誰(shuí)有興趣的話,可以繼續(xù)完善或發(fā)掘新的功能。 至于zzzevazzz所說(shuō)的替換的內(nèi)容不對(duì),我用的系統(tǒng)是2000的,不知道你的是什么。如果你的系統(tǒng)也是2000的話,可以參見cmd和set命令的幫助部分,查看有關(guān)了延遲環(huán)境變量的內(nèi)容。別忘了在執(zhí)行bat文件的同時(shí)加上cmd的/v:on參數(shù)。別的系統(tǒng)我沒試過(guò)。我想2000以后的系統(tǒng)應(yīng)該都有這個(gè)特性。 還有就是如果我連自己都試過(guò)完全不行的話我也不會(huì)發(fā)上來(lái)了,不過(guò)還是要謝謝你,因?yàn)槟銕臀抑赋隽似渲械膯?wèn)題。同時(shí)向你學(xué)習(xí),因?yàn)槟銓?duì)待事物的嚴(yán)謹(jǐn)態(tài)度。 | ||
| zzzevazzz |
| ||
| 發(fā)帖: 275 積分: 0 注冊(cè): 2002-05-13 | 我沒注意到“cmd /v:on /c”,抱歉。 但是還有問(wèn)題,被替換的文本在行尾多了許多的空格,原因是 echo !TMP:%SCONTENT%=%DCONTENT%! >> %TMPFILE% 這條語(yǔ)句的">>"前多了不必要的空格。 文件名帶空格的問(wèn)題容易解決,下面是我修改過(guò)的: @echo off setlocal rem DPATH?? : 指定目錄 rem FILETYPE: 指定文件類型 rem SCONTENT: 替換前的字符串 rem DCONTENT: 替換后的字符串 rem TMPFILE : 臨時(shí)文件 set DPATH=C:/test set FILETYPE=*.txt set SCONTENT=aaa set DCONTENT=bbb set TMPFILE=%random%.tmp for /r %DPATH% %%i in (%FILETYPE%) do ( ????if exist %TMPFILE% (del /f/q %TMPFILE%) ????for /f "usebackq tokens=*" %%j in ("%%i") do ( ??????set TMP=%%j ??????echo !TMP:%SCONTENT%=%DCONTENT%!>>%TMPFILE% ????) ????move /y %TMPFILE% "%%i" ) endlocal --- Ph4nt0m Security Team http://ph4nt0m.org/ | ||
| uglyfrog |
| ||
| 發(fā)帖: 249 積分: 0 注冊(cè): 2001-12-30 | 晚上抽空又看了一下。那句echo在批處理中總是解析成 echo !TMP:aaa=bbb!??1>>25417.tmp,所以會(huì)在行尾多一個(gè)空格。 所以可以用如下的方法解決: echo !TMP:%SCONTENT%=%DCONTENT%!>nul 1>>%TMPFILE% 還有那個(gè)文件名中有空格的問(wèn)題,你的處理方法不錯(cuò),充分利用了usebackq的特性。也可以變通的用: for /f "tokens=*" %%j in ('type "%%i"') 來(lái)搞定。 | ||
| allyesno |
| ||
| 發(fā)帖: 1128 積分: 0 注冊(cè): 2003-06-06 | bat的功能還是太弱了 如果只是字母和數(shù)字 這個(gè)程序還可以執(zhí)行 如果文本包含^&":;<> 這些字符 處理起來(lái)很麻煩 沒有專門對(duì)字符 和字符串 操作的函數(shù) 也不具備多線程的性能 也不能讀寫內(nèi)存 呵呵 allyesno 編輯于 2005-06-17 09:24 --- ▄︻┻┳═一★ QQ溢出了~~~~ | ||
再分享一下我老師大神的人工智能教程吧。零基礎(chǔ)!通俗易懂!風(fēng)趣幽默!還帶黃段子!希望你也加入到我們?nèi)斯ぶ悄艿年?duì)伍中來(lái)!https://blog.csdn.net/jiangjunshow
總結(jié)
以上是生活随笔為你收集整理的用批处理实现文本文件中指定字符串的替换 zz的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Redis作者摊上事了:多人要求修改Re
- 下一篇: maven引入阿里云镜像源(Maven下