日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

用批处理实现文本文件中指定字符串的替换 zz

發(fā)布時(shí)間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用批处理实现文本文件中指定字符串的替换 zz 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
主題 用批處理實(shí)現(xiàn)文本文件中指定字符串的替換 ? 上一主題 | 下一主題 ?
uglyfrog
發(fā)表于:2005-03-02 02:50 回復(fù)
發(fā)帖: 249
積分: 0
注冊(cè): 2001-12-30
其實(shí)批處理也可以干很多事的,下面的批處理文件實(shí)現(xiàn)了對(duì)指定目錄下的特定文件類型中的字符串進(jìn)行替換的功能。雖然在unix或linux系統(tǒng)寫一條語(yǔ)句就能實(shí)現(xiàn),但在windows下用批處理也總比編一段程序方便些吧。

引用


@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 "tokens=*" %%j in (%%i) do (

??????set TMP=%%j

??????echo !TMP:%SCONTENT%=%DCONTENT%! >> %TMPFILE%

????)



????move /y %TMPFILE%??%%i

)



endlocal



把以上內(nèi)容保存為replace.bat,然后在命令行下執(zhí)行cmd /v:on /c replace.bat
本例子實(shí)現(xiàn)了把c:/test目錄(包括子目錄)中所有txt文件中的aaa替換成bbb。
zzzevazzz
發(fā)表于:2005-03-02 12:53 回復(fù)
發(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ā)表于:2005-03-02 14:21 回復(fù)
發(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ā)表于:2005-03-02 22:21 回復(fù)
發(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ā)表于:2005-03-03 00:10 回復(fù)
發(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ā)表于:2005-06-17 09:21 刪除 編輯 回復(fù)
發(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)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。