![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 07:51 |
共 48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » sed如何能使用dos的环境变量? |
| 可打印版本 1,206 / 9 |
| 第1楼 axolo | 发表于 2007-10-30 16:35 |
| 新手上路 发帖 7 积分 18 | |
|
sed如何能使用dos的环境变量? 1、程序:sed for dos
2、需要替换的文件tool.ini,template.ini 3、需要替换字符串_SETPATH为当前路径%CD% 4、错误的命令行: sed -i 's/_SETPATH/%CD%/g' tool.ini 5、原因:含有%号 6、应该可以用:sed -i 's/_SETPATH/$CD/g' tool.ini 请问如何才能在DOS下实现 $CD 等于 %CD% 所指定的当前路径? 能实现不同路径多文件同时替换么? 请赐教,谢谢。 sed -i "s/_SETPATH/%CD%/g" tool.ini 结果能替换可是DOS路径的\被删除了 得到的结果是c:windowssystem32 不是我想要的c:\windows\system32 请问如何解决》??? [ Last edited by axolo on 2007-10-30 at 08:36 PM ] |
|
| 第2楼 lxmxn | 发表于 2007-10-31 04:29 |
| 版主 发帖 4,938 积分 11,386 | |
|
RE axolo:
我猜想你的环境是DOS环境或者NT系列系统下的命令提示符,那么对于“sed -i 's/_SETPATH/%CD%/g' tool.ini”这一句是无法执行的,提示“Unknown command: `''”,也就是单引号(')出错了,因为在DOS或者命令提示符环境中,系统默认的字符引号对是双引号(""),而单引号却只识别成普通的字符,这和Linux下面的shell是不同的。 所以只能用双引号来将sed命令括起来。但是DOS的路径分隔符是反斜杠(\),而反斜杠是sed的转义字符,如果要保留这个转义字符,那么只能将原来的替换字串中的\转换成\\,这样就转义掉一个,还剩下一个。 另外,sed 应该可以使用通配符的,用*.ini可以表示当前目录中所有的ini文件,所以最后可以这样写: |
|
| 第3楼 axolo | 发表于 2007-10-31 08:21 |
| 新手上路 发帖 7 积分 18 | |
|
非常感谢
谢谢 俺是从DOS3.1一路走来的老古董了 现在倒快忘了DOS和C了 想不到这里还有DOS高手云集的地方 好好学习 谢谢 |
|
| 第4楼 axolo | 发表于 2007-10-31 13:17 |
| 新手上路 发帖 7 积分 18 | |
|
问题又来了,sed替换之后
居然把DOS格式的文本转成了UNIX格式的 回车换行\n全给解释成回车\r了 想保留回车\n原样不被换成\r怎么办?? 怎么办? |
|
| 第5楼 abcd | 发表于 2007-10-31 13:20 |
| 银牌会员 发帖 739 积分 1,436 | |
|
sed "s/$//"
|
|
| 第6楼 axolo | 发表于 2007-10-31 15:12 |
| 新手上路 发帖 7 积分 18 | |
Originally posted by abcd at 2007-10-31 01:20 PM: 小弟新来,不太明白。 能不能给个完整的写法??? 谢谢 |
|
| 第7楼 abcd | 发表于 2007-10-31 15:18 |
| 银牌会员 发帖 739 积分 1,436 | |
Originally posted by axolo at 2007-10-31 03:12 PM: 我的意思是替换unix的新行符为DOS格式 |
|
| 第8楼 axolo | 发表于 2007-10-31 16:32 |
| 新手上路 发帖 7 积分 18 | |
|
也就是我有个文本文件,见容如下:
set cd=%cd:\=\\% sed "s/D:\\app\\EditPlus/%CD%/g" *.ini \0x0D\0x0A 为DOS的回车换行 \0x0A 为UNIX的换行 D:\app\EditPlus正确替换成了E:\EditPlus,但DOS回车换行也被改成了UNIX的换行。 我需要保留\0x0D\0x0A [ Last edited by axolo on 2007-10-31 at 04:35 PM ] |
|
| 第9楼 abcd | 发表于 2007-10-31 16:45 |
| 银牌会员 发帖 739 积分 1,436 | |
|
我这替换是不会丢失\0x0D的
|
|
| 第10楼 zhflwx | 发表于 2008-01-17 22:40 |
| 新手上路 发帖 5 积分 11 | |
|
又学习了一下呢,呵呵。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |