中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 請文如何將一的檔案中的某一行文字換成你需要的文字
« [1] [2] »
作者:
标题: 請文如何將一的檔案中的某一行文字換成你需要的文字 上一主题 | 下一主题
dosfroum
初级用户





积分 154
发帖 54
注册 2005-9-25
状态 离线
『楼 主』:  請文如何將一的檔案中的某一行文字換成你需要的文字

假如有一檔案 Try.txt內容如下
AAA    = 10.7
BBB    = 11.6
CCC    = 13.4
DDD    = 15.8
EEE    = 17.1
如果要用批次檔的方次把
"CCC    = 13.4"
這行至換成
"CCC    = 55.33"
這樣子應該要如何寫

謝謝

2005-12-7 13:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dosfroum
初级用户





积分 154
发帖 54
注册 2005-9-25
状态 离线
『第 2 楼』:  

這個問題應該會有不少人遇到
或者是需要
是太簡單了 還是 無解阿
都沒消沒息的@@

2005-12-11 10:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 3 楼』:  

允許使用第三方工具麼?如果允許的話,可以試試XCHANGE之類的工具,一行就可以解決。例如試試這條命令(XCHANGE見附件):

XCHANGE Try.txt "CCC    = 13.4" "CCC    = 55.33"

附件 1: XCHANGE.EXE (2005-12-11 11:31, 22.04 K, 下载附件所需积分 1 点 ,下载次数: 94)


Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2005-12-11 11:29
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
zreo
初级用户





积分 51
发帖 14
注册 2005-11-6
状态 离线
『第 4 楼』:  

有这个工具的应用祥解吗?

2005-12-11 14:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
arding
初级用户





积分 90
发帖 38
注册 2006-1-6
状态 离线
『第 5 楼』:  


@echo off & setlocal EnableDelayedExpansion
echo.>n_try.txt
for /f "tokens=1,2,3*" %%i in (try.txt) do set var1=%%i && if "CCC " == "!var1!" (echo CCC    = 55.33>>n_try.txt) else (echo %%i    %%j %%k>>n_try.txt)
pause


2006-1-12 20:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gmy
版主

操作系统爱好者


积分 1113
发帖 392
注册 2002-11-11
状态 离线
『第 6 楼』:  

我用 HEXC,只有5KB,比XCHANGE更小巧,但功能简单了一些,够用了。
hexc Try.txt Try.txt "CCC    = 13.4" "CCC    = 55.33" /u

附件 1: HEXC.rar (2006-1-13 14:00, 4.21 K, 下载附件所需积分 1 点 ,下载次数: 57)


DOS之家 http://doshome.com 站长 葛明阳
2006-1-13 14:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vptdosme
初级用户





积分 97
发帖 32
注册 2005-12-3
状态 离线
『第 7 楼』:  

最好不要使用第三方工具,否则无法实现批处理的价值

2006-1-14 22:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 8 楼』:  

Re vptdosme:

      arding 兄在5楼提供的程序,即是 CMD 下没有使用第三方程序,若想在 Win9x/DOS 下实现,则会复杂很多,需要使用文本遍历算法或者利用ASCII汇编器echo出一个类似的替换程序进行替换,除非确有必要,一般不建议采用。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-1-15 20:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dosfroum
初级用户





积分 154
发帖 54
注册 2005-9-25
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by Wengier at 2005-12-11 11:29:
允許使用第三方工具麼?如果允許的話,可以試試XCHANGE之類的工具,一行就可以解決。例如試試這條命令(XCHANGE見附件):

XCHANGE Try.txt "CCC     ...

對不起這個方好好像不行
因為 CCC    =12.5  #TEST
要是 CCC       =12.5   #TEST
每個人修改後的空格數不固定所以我的標題才會寫
修改特定一行資料
而版大提出來的是字串 所以可否幫忙解決一下
謝謝

2006-2-16 09:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dosfroum
初级用户





积分 154
发帖 54
注册 2005-9-25
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by arding at 2006-1-12 20:18:
@echo off & setlocal EnableDelayedExpansion
echo.>n_try.txt
for /f "tokens=1,2,3*" %%i in (try.txt) do set var1=%%i && if "CCC " == "!var1!" (ec ...

這個方式的確可以修改 但是有個問題 他會砍資料 就是當你的空格適用TAB鍵產生的 後段的資料全部砍掉 有辦法克服嗎 謝謝
修改 11b_ATTEN_DUT_PM   這行


原始資料
11b_ATTEN_DUT_SA              = 15.5;        # Attenuation at 2.5GHz between DUT and spectrum analyzer (double)
11b_ATTEN_FIXED_DUT_GOLDEN    = 41.8;   # Fixed attenuation at 2.5GHz between DUT and GOLDEN (double)
11b_ATTEN_DUT_PM              = 21.4;          # Attenuation at 2.5GHz between DUT and power meter (double)
執行後資料
11b_ATTEN_DUT_SA    = 15.5;
11b_ATTEN_FIXED_DUT_GOLDEN    = 41.8;
11b_ATTEN_DUT_PM    = 33.55;


2006-2-16 10:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 11 楼』:  

Re dosfroum:

      这与 tab 没有什么关系,for /f 缺省时是承认 tab 作为切分符的。主要是因为原程序中遗漏了 %%l 的输出。例句如下:
@echo off
if exist tabo.txt del tabo.txt
for /f "tokens=1,2,3*" %%i in (tab.txt) do (
    if "%%i"=="11b_ATTEN_DUT_PM" (echo %%i   %%j 33.55 %%l>>tabo.txt) else (echo %%i   %%j %%k %%l>>tabo.txt)
)




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-2-16 11:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
220110
荣誉版主




积分 718
发帖 313
注册 2005-9-26
状态 离线
『第 12 楼』:  

Re willsort:

你的程序有小失误,把分号给丢失了。另,程序没有产生 dosfroum 希望的“执行后资料”;而把后边注释跟进了。

2006-2-16 22:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 13 楼』:  

Re 220110:

      分号确实是我的疏忽,时间所限,没有进行严格的测试。至于注释,我的理解是 dosfroum 兄是希望保留着些注释信息的,至于这些信息失去了原来的对齐效果,那就是 for /f 的局限所在了,可以考虑将%%i %%j %%k %%l 之间的空格改为Tab,但是效果仍然未必十分理想。如果使用 awk 的话,就可以使用类似C语言 printf 的函数来实现文本对齐了。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-2-17 09:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dosfroum
初级用户





积分 154
发帖 54
注册 2005-9-25
状态 离线
『第 14 楼』:  

請問可以改成 除了 那行以外的資料能不去變動嗎
好多空白被拿掉了 不過已經比之前的好很多了
感謝!!

執行前
11b_ATTEN_DUT_SA              = 15.5;        # Attenuation at 2.5GHz between DUT and spectrum analyzer (double)
11b_ATTEN_FIXED_DUT_GOLDEN    = 41.8;           # Fixed attenuation at 2.5GHz between DUT and GOLDEN (double)
11b_ATTEN_DUT_PM              = 21.4;          # Attenuation at 2.5GHz between DUT and power meter (double)

   2442                  0        -85        0         -90        1        1111        0                0        6.0
#   2447                  1        -85        0         -90        0        1111        0                1        6.0
#   2452                  1        -85        0         -90        0        1111        0                1        6.0
#   2457                  1        -85        0         -90        0        1111        0                1        6.0
#   2462                  1        -85        0         -90        0        1111        0                1        6.0
#   2467                  1        -85        0         -90        0        1111        0                1        6.0
#  2472                  1        -85        0         -90        0        1111        0                1        6.0
   2484                  1        -85        0         -90        0        1111        0                1        6.0
執行後
11b_ATTEN_DUT_SA   = 15.5; # Attenuation at 2.5GHz between DUT and spectrum analyzer (double)
11b_ATTEN_FIXED_DUT_GOLDEN   = 41.8; # Fixed attenuation at 2.5GHz between DUT and GOLDEN (double)
11b_ATTEN_DUT_PM   = 33.55 # Attenuation at 2.5GHz between DUT and power meter (double)

2442   0 -85 0         -90        1        1111        0                0        6.0
#   2447 1 -85        0         -90        0        1111        0                1        6.0
#   2452 1 -85        0         -90        0        1111        0                1        6.0
#   2457 1 -85        0         -90        0        1111        0                1        6.0
#   2462 1 -85        0         -90        0        1111        0                1        6.0
#   2467 1 -85        0         -90        0        1111        0                1        6.0
#   2472 1 -85        0         -90        0        1111        0                1        6.0


2006-2-17 15:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dosfroum
初级用户





积分 154
发帖 54
注册 2005-9-25
状态 离线
『第 15 楼』:  

對不起
發現另外一個問題
第一格的空白會增加
且值沒有修改到

批次檔
@Echo on
C:
CD\
attrib -R -S -A -H boot.ini
copy boot.ini+boot.txt Boot.ini

if exist temp.txt del temp.txt
for /f "tokens=1,2,3*" %%i in (boot.ini) do (
    if "%%i"=="timeout" (echo %%i   %%j 3 %%l>>temp.txt) else (echo %%i   %%j %%k %%l>>temp.txt)
)

attrib +S +A +H boot.ini

rem del addboot.bat
原始檔
[boot loader]
timeout=35
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
批處理後
[boot   loader]  
timeout=35     
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT     
[operating   systems]  
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft   Windows 2000 Professional" /fastdetect
C:\ieldr="Boot   From Virtual CD"
[ Last edited by dosfroum on 2006-2-17 at 15:45 ]

2006-2-17 15:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: