|  | 
 
| 999888777 初级用户
 
   
 
 
 
 积分 28
 发帖 11
 注册 2008-1-28
 状态 离线
 | 
| 『楼 主』:
 怎样批量替换字符串
 
使用 LLM 解释/回答一下 
 
 
请热心朋友帮忙写一个批处理:把d:\*.TXT中所有的"他"换成"她".
 谢谢!
 
 Last edited by 999888777 on 2008-1-29 at 07:47 PM ]
 
 
 
 
 |  | 
|  2008-1-28 17:03 |  | 
|  | 
 
| 999888777 初级用户
 
   
 
 
 
 积分 28
 发帖 11
 注册 2008-1-28
 状态 离线
 | 
| 『第 2 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
试着弄了一个,请高手修改一下,感谢!
 @echo off
 setlocal
 
 rem 用批处理实现文本文件中指定字符串的替换
 
 rem DPATH   : 指定目录
 rem FILETYPE: 指定文件类型
 rem SCONTENT: 替换前的字符串
 rem DCONTENT: 替换后的字符串
 rem TMPFILE : 临时文件
 
 set DPATH=D:\
 set FILETYPE=*.txt
 set SCONTENT=他
 set DCONTENT=她
 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%!>nul 1>>%TMPFILE%
 )
 move /y %TMPFILE% "%%i"
 )
 
 endlocal
 pause
 
 Last edited by 999888777 on 2008-1-30 at 12:42 PM ]
 
 
 
 
 |  | 
|  2008-1-30 11:52 |  | 
|  | 
 
| plp626 银牌会员
 
      钻石会员
 
 
 积分 2278
 发帖 1020
 注册 2007-11-19
 状态 离线
 | 
| 『第 3 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
BAT弄这个总有点缺陷(感叹号过滤): @echo off&setlocal enabledelayedexpansionfor /r d: %%i in (*.txt) do (
 for /f "delims=" %%a in ('type "%%i"') do (
 set a=%%a
 set b=!a:他=她!
 echo.!b!>>"%%~dpni"_已替.txt
 )    )
 
未测试.
 
 
 
 |  | 
|  2008-1-30 15:05 |  | 
|  | 
 
| 999888777 初级用户
 
   
 
 
 
 积分 28
 发帖 11
 注册 2008-1-28
 状态 离线
 | 
| 『第 4 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
谢谢!测试了一下,出现很多*_已替.txt .
 我的意思是在原来的文本中实现替换.
 我上面弄的那个可以在原来的文本中实现替换,但替换的不对.
 请高手修改一下好吗?
 
 
 
 
 |  | 
|  2008-1-30 21:13 |  | 
|  | 
 
| terse 银牌会员
 
      
 
 
 
 积分 2404
 发帖 946
 注册 2005-9-8
 状态 离线
 | 
| 『第 5 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
试试这个怎么样@echo off
 for /r %%i in (*.txt) do (
 if not defined %%i set %%i=a& (
 for /f "delims=" %%a in ('findstr /n .* %%i') do (
 set list=%%a
 setlocal enabledelayedexpansion
 set list=!list:*:=!
 set list=!list:他=她!
 >>"%%i.tmp" echo/!list!
 endlocal
 )
 move /y "%%i.tmp" "%%i" 2>NUL
 )
 )
 pause
 
 
 
 | 此帖被 +2 点积分    点击查看详情 | 评分人:【 nipo 】 | 分数: +2 | 时间:2008-4-28 20:31 | 
 | 
 
 
 
 
 |  
                  |  简单!简单!再简单!
 |  | 
|  2008-1-30 22:49 |  | 
|  | 
 
| plp626 银牌会员
 
      钻石会员
 
 
 积分 2278
 发帖 1020
 注册 2007-11-19
 状态 离线
 |  | 
|  2008-1-30 23:45 |  | 
|  | 
 
| 999888777 初级用户
 
   
 
 
 
 积分 28
 发帖 11
 注册 2008-1-28
 状态 离线
 |  | 
|  2008-1-31 14:09 |  | 
|  | 
 
| hly 初级用户
 
   
 
 
 积分 28
 发帖 7
 注册 2008-1-10
 来自 江苏
 状态 离线
 |  | 
|  2008-2-6 17:08 |  | 
|  | 
 
| nipo 中级用户
 
    
 
 
 
 积分 228
 发帖 106
 注册 2008-4-26
 状态 离线
 |  | 
|  2008-4-27 20:33 |  | 
|  | 
 
| nipo 中级用户
 
    
 
 
 
 积分 228
 发帖 106
 注册 2008-4-26
 状态 离线
 | 
| 『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
本想给terse加分,但系统提示:
 
 对不起,您最近 24 小时评分数超过 5 点 限制,请返回。
 
 [ 点击这里返回上一页 ]
 
 
 
 
 |  | 
|  2008-4-27 20:35 |  | 
|  | 
 
| plp626 银牌会员
 
      钻石会员
 
 
 积分 2278
 发帖 1020
 注册 2007-11-19
 状态 离线
 | 
| 『第 11 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
高效代码: @echo offfor /r d: %%i in (*.txt) do (
 for /f "delims=" %%a in (%%~si) do (
 set a=%%a
 setlocal enabledelayedexpansion
 set b=!a:他=她!
 echo.!b!>>"%%~dpni"_已替.txt
 endlocal
 )    )
 
 
 | 此帖被 +2 点积分    点击查看详情 | 评分人:【 nipo 】 | 分数: +2 | 时间:2008-4-28 20:31 | 
 | 
 
 
 
 
 |  
                  |  山外有山,人外有人;低调做人,努力做事。
 
 进入网盘(各种工具)~~ 空间~~cmd学习
 |  | 
|  2008-4-27 22:53 |  | 
|  | 
 
| nipo 中级用户
 
    
 
 
 
 积分 228
 发帖 106
 注册 2008-4-26
 状态 离线
 | 
| 『第 12 楼』:
 非常感谢plp626!!!并请教>>>>
 
使用 LLM 解释/回答一下 
 
 
刚才试验了你的代码,真的非常高效,而且通用性强。
 测试了一个比较复杂的文本,内容如下:
 
 ////////////////////////////////////////////////////////////////////////////////////////
 "Time"	"Log Type"	"Rule Name"	"Action"	"Direction"	"Rule Type"
 
 "Adapter Zone"	"Data Length"	"Ethernet Source"	"Ethernet Dest"	"Ethernet Type"	"IP
 
 Source"	"IP Dest"	"Protocol"	"Port Src"	"Port Dest"
 
 "2008/04/27 18:11:03"	"eLogType_Packet"	"所有其她包"	"0"	"出站"	"0"
 
 "FWInternetZone"	"54"	"01:2B:11:V5:M6:W5"	"03:4E:R5:J7:U7:R6"	"IP"
 
 "192.168.3.78"	"124.33.15.157"	"TCP"	"1039"	"80"
 
 "2008/04/27 18:11:03"	"eLogType_Packet"	"所有其她包"	"0"	"出站"	"0"
 
 "FWInternetZone"	"54"	"01:2B:11:V5:M6:W5"	"03:4E:R5:J7:U7:R6"	"IP"
 
 "192.168.3.78"	"124.33.15.157"	"TCP"	"1043"	"80"
 
 "2008/04/27 18:11:03"	"eLogType_Packet"	"所有其她包"	"0"	"出站"	"0"
 
 "FWInternetZone"	"54"	"01:2B:11:V5:M6:W5"	"03:4E:R5:J7:U7:R6"	"IP"
 
 "192.168.3.78"	"124.33.15.157"	"TCP"	"1037"	"80"
 
 "2008/04/27 18:11:03"	"eLogType_Packet"	"所有其她包"	"0"	"出站"	"0"
 
 "FWInternetZone"	"54"	"01:2B:11:V5:M6:W5"	"03:4E:R5:J7:U7:R6"	"IP"
 
 "192.168.3.78"	"124.33.15.157"	"TCP"	"1041"	"80"
 
 /////////////////////////////////////////////////////////////////////////////
 
 
 测试改“她”为“他”,改“出站”为“入站”,还有数字、字母,结果都正确。而terse的代码对这个复杂文件不能实现改写。特此向你致敬、致谢!(当然也同样感谢terse,提供了够我现在用的代码,尤其是技术知识,也许是我没用好他的代码)。
 
 测试过程中,屡次修改,中间碰到几次小问题,可能是我操作上有错误。最近一次出现这样一个错误结果:在新文本中间的空行处出现”她=他“字符串。经仔细查找,发现是源文件被改成这样。改回来之后又正常了。
 
 不知是什么原因?我对代码含义还没弄清楚。
 
 Last edited by nipo on 2008-4-28 at 09:09 PM ]
 
 
 
 
 |  | 
|  2008-4-28 20:30 |  | 
|  | 
 
| nipo 中级用户
 
    
 
 
 
 积分 228
 发帖 106
 注册 2008-4-26
 状态 离线
 |  | 
|  2008-4-28 20:34 |  | 
|  | 
 
| stockghost 中级用户
 
    
 
 
 
 积分 215
 发帖 105
 注册 2007-6-2
 状态 离线
 | 
| 『第 14 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
很少弄批处理.如果是我来搞,就会几条简单的批命令,没办法,只能编个简单的程序来实现.
 能把批处理搞成这样,着实在DOS上费了不少工夫,高,实在是高!
 
 
 
 
 |  | 
|  2008-4-28 22:16 |  | 
|  | 
 
| plp626 银牌会员
 
      钻石会员
 
 
 积分 2278
 发帖 1020
 注册 2007-11-19
 状态 离线
 | 
| 『第 15 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by nipo at 2008-4-28 08:30 PM:刚才试验了你的代码,真的非常高效,而且通用性强。
 
 测试了一个比较复杂的文本,内容如下:
 
 /////////////////////////////////////////////////////////////// ...
 
我说的高效是只速度快,用for /r是用for /f速度的两倍,(这个你可以测试) 
------------------------ 
这个帖子是比较早的了,以前没有掌握endlocal所以以为会对某些字符过滤,看到你回帖现在才补上 
 
 
 
 
 |  
                  |  山外有山,人外有人;低调做人,努力做事。
 
 进入网盘(各种工具)~~ 空间~~cmd学习
 |  | 
|  2008-4-28 22:26 |  |