中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-20 14:41
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]請問如何針對某個分隔符內字串作處理? 查看 731 回复 6
楼 主 [求助]請問如何針對某個分隔符內字串作處理? 发表于 2007-11-05 11:51 ·  中国 台湾 中华电信(HiNet)数据中心
初级用户
积分 96
发帖 43
注册 2007-10-31 01:20
18年会员
UID 101245
性别 男
状态 离线
我有一個文本內容是這樣的
∥bc915∥∥∥Ediary 2.53∥59.117.162.144∥2007/08/23/ 01:10:07∥2007/08/23/ 01:10:07∥698∥4∥2007/10/12 13:13∥∥∥∥TATATA∥


紅色的部份是我要刪除的部份
而空格的部份我要替換成"中國萬歲"
而我需要只針對那個分隔符內的字串作修改,其他的不要去修改到

可是我寫到這裡就不知道該怎麼寫了

@echo off
for /f "delims=" %%f in ('dir /on/b "1.txt"') do (
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 delims=∥" %%i in (%%f) do echo %%i∥∥%%j∥%%k∥%%l∥%%m∥%%n∥%%o∥%%p∥∥∥∥%%q∥>>2.txt
)
pause


麻煩老大哥們幫我寫個範例
我會依我的需要去改的
十分感謝><"

[ Last edited by leo1984 on 2007-11-5 at 11:53 AM ]
2 发表于 2007-11-05 12:42 ·  中国 浙江 杭州 电信
高级用户
★★
积分 537
发帖 219
注册 2007-08-04 09:43
18年会员
UID 94620
性别 男
来自 杭州--半山
状态 离线
sed -e "s/ /中国/g;s:/::7;s:/::7;s/://5" 1.txt
3 发表于 2007-11-05 12:43 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
是这个意思?

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%f in ('dir /on/b "1.txt"') do (
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 delims=∥" %%i in (%%f) do (
set "q=%%q"
set q=!q::=!
set q=!q:/=!
echo %%i∥中國萬歲∥%%j∥%%k∥%%l∥%%m∥%%n∥%%o∥%%p∥中國萬歲∥中國萬歲∥中國萬歲∥!q!∥>>2.txt
)
)
pause

还是这个呢?

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%f in ('dir /on/b "1.txt"') do (
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 delims=∥" %%i in (%%f) do (
set "q=%%q"
set q=!q::=!
set q=!q:/=!
set q=!q: =中國萬歲!
echo %%i∥ ∥%%j∥%%k∥%%l∥%%m∥%%n∥%%o∥%%p∥ ∥ ∥ ∥!q!∥>>2.txt
)
)
pause


[ Last edited by terse on 2007-11-5 at 12:47 PM ]
4 发表于 2007-11-05 18:16 ·  中国 台湾 中华电信(HiNet)数据中心
初级用户
积分 96
发帖 43
注册 2007-10-31 01:20
18年会员
UID 101245
性别 男
状态 离线
非常感謝大哥們幫忙
但我是要針對%%p內的字串作修改,其他的都不會修改到
但剛才試了,好像都沒有修改到耶@@?
請問是什麼原因呢?
5 发表于 2007-11-05 18:44 ·  中国 香港 腾讯云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
sed "/∥/ s# #中國萬歲#4;s#/##7;s###7;s#:##5" 1.txt>2.txt

能用sed,干嘛不用呢??

[ Last edited by abcd on 2007-11-5 at 08:54 PM ]
6 发表于 2007-11-05 19:44 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%f in ('dir /on/b "1.txt"') do (
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 delims=∥" %%i in (%%f) do (
set "q=%%q"
set q=!q::=!
set q=!q:/=!
set q=!q: =中國萬歲!
echo %%i∥ ∥%%j∥%%k∥%%l∥%%m∥%%n∥%%o∥%%p∥ ∥ ∥ ∥!q!∥>>2.txt
)
)
pause

1.txt:

∥bc915∥∥∥Ediary 2.53∥59.117.162.144∥2007/08/23/ 01:10:07∥2007/08/23/ 01:10:07∥698∥4∥2007/10/12 13:13∥∥∥∥TATATA∥

2.txt:

bc915∥ ∥∥Ediary 2.53∥59.117.162.144∥2007/08/23/ 01:10:07∥2007/08/23/ 01:10:07∥698∥4∥ ∥ ∥ ∥20071012中國萬歲1313∥


[ Last edited by terse on 2007-11-5 at 07:46 PM ]
7 发表于 2007-11-05 21:33 ·  中国 台湾 中华电信(HiNet)数据中心
初级用户
积分 96
发帖 43
注册 2007-10-31 01:20
18年会员
UID 101245
性别 男
状态 离线
非常感謝terse大哥的指導^^
一日為師終身為父@@

給abcd大哥,不是我不用@@
是因為我想要"看的懂" "學得會"
dos指令我目前懂得看也剛開始學寫
一樣一樣開始學習
sed使用上是可以成功的,但我還沒學到這一塊^^
十分感謝您指導,體諒初學者
论坛跳转: