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