中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-13 00:45
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » [求助]在批处理中用Echo创建文件和写入文本的问题? 查看 1,873 回复 7
楼 主 [求助]在批处理中用Echo创建文件和写入文本的问题? 发表于 2003-07-31 00:00 ·  中国 广东 肇庆 电信
高级用户
★★
积分 578
发帖 135
注册 2003-07-10 00:00
23年会员
UID 6709
性别 男
状态 离线
在批处理中,想在D:\下创建一个test.bat,内容为:set aaa=bbb

于是:
................
echo set aaa= >d:\test.bat
echo bbb >>d:\test.bat

但执行上面语句得到的结果d:\test.bat的内容却为:
set aaa=
bbb
而不是:
set aaa=bbb

请问如何能让上面两行命令输出到d:\test.bat上的字符串在同一行上?
2 发表于 2003-08-01 00:00 ·  中国 广东 广州 黄埔区 电信
初级用户
★★★
积分 1,480
发帖 377
注册 2003-06-06 00:00
23年会员
UID 3875
性别 男
状态 离线
其实你自己都会了嘛....
echo set aaa=bbb>d:\test.bat不就行了
欢迎大家访问我的主页!
精品.爱好http://iso.533.net
3 发表于 2003-08-01 00:00 ·  中国 广东 肇庆 电信
高级用户
★★
积分 578
发帖 135
注册 2003-07-10 00:00
23年会员
UID 6709
性别 男
状态 离线
上面的例子只是打个比方!
我想知道的是:如何让两次用ECHO命令输出的内容打印到test.bat里面的同一行上!
4 发表于 2003-08-02 00:00 ·  中国 福建 福州 电信
初级用户
积分 183
发帖 29
注册 2003-06-22 00:00
23年会员
UID 5695
性别 男
状态 离线
你那种想法是不可行的,ECHO是绝对换行显示!
5 发表于 2003-08-02 00:00 ·  中国 安徽 滁州 天长市 电信
银牌会员
★★★
积分 1,835
发帖 648
注册 2002-11-08 00:00
23年会员
UID 197
性别 男
状态 离线
DOS下的ECHO命令太弱了,不过瘾啊
6 发表于 2003-08-02 00:00 ·  美国 肯塔基州 费耶特县 列克星敦 Charter_Communications
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
23年会员
UID 9
状态 离线
以下是引用LanE在2003-8-2 10:54:28的发言:
DOS下的ECHO命令太弱了,不过瘾啊


那GNUish的DOS命令(如PRINTF等)也不错呢。。
Wengier - 新DOS时代

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

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

7 发表于 2003-09-29 00:00 ·  中国 山东 烟台 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re hzy:

让他们输出在同一行的方法有三种思路:

1、想办法不输出回车符:
用echo肯定是不行了,可以试试斑竹所说的GNUish命令,我自己使用的是oecho.exe,这些如果你都找不到,干脆自己直接用C或汇编写一个,反正也很简单。另外,用debug也可以写出来。如果你对这些方法都看不惯,那么可以试试以下的思路。

2、就用echo输出,然后把回车符想办法删掉:
这个很有技巧性,我至今只见到使用debug将文件长度减少两个字节后重新保存,不过这需要预知源文件的长度,应用有些局限性。另外,一些支持管道操作的编辑软件(如dos5下的edlin)或者二进制串替换软件(如undisk软件包中的hexc)也可以做到这一点。
echo r cx >delfeed.scr
echo 源文件长度减2,再换算为16进制 >> delfeed.scr
echo n sample2.tx>>delfeed.scr
echo s >> delfeed.scr
debug sample1.txt < delfeed.scr

hexc sample1.txt sample2.txt 0d0a ""

3、直接预制所需文件,不用临时输出,这种方法适用于sample1.txt内容固定时,用编辑程序预先编辑所需要的不带回车符的头文件没有什么大的困难。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
8 发表于 2003-10-01 00:00 ·  中国 福建 漳州 广电网
中级用户
SHOCI@@
积分 228
发帖 41
注册 2003-10-01 00:00
22年会员
UID 10566
性别 男
状态 离线
以下是引用willsort在2003-9-29 3:20:20的发言:
Re&nbsp;hzy:

&nbsp;&nbsp;&nbsp;&nbsp;让他们输出在同一行的方法有三种思路:

&nbsp;&nbsp;&nbsp;&nbsp;1、想办法不输出回车符:
&nbsp;&nbsp;&nbsp;&nbsp;用echo肯定是不行了,可以试试斑竹所说的GNUish命令,我自己使用的是oecho.exe,这些如果你都找不到,干脆自己直接用C或汇编写一个,反正也很简单。另外,用debug也可以写出来。如果你对这些方法都看不惯,那么可以试试以下的思路。

&nbsp;&nbsp;&nbsp;&nbsp;2、就用echo输出,然后把回车符想办法删掉:
&nbsp;&nbsp;&nbsp;&nbsp;这个很有技巧性,我至今只见到使用debug将文件长度减少两个字节后重新保存,不过这需要预知源文件的长度,应用有些局限性。另外,一些支持管道操作的编辑软件(如dos5下的edlin)或者二进制串替换软件(如undisk软件包中的hexc)也可以做到这一点。
&nbsp;&nbsp;&nbsp;echo&nbsp;r&nbsp;cx&nbsp;>delfeed.scr
&nbsp;&nbsp;&nbsp;echo&nbsp;源文件长度减2,再换算为16进制&nbsp;>>&nbsp;delfeed.scr
&nbsp;&nbsp;&nbsp;echo&nbsp;n&nbsp;sample2.tx>>delfeed.scr
&nbsp;&nbsp;&nbsp;echo&nbsp;s&nbsp;>>&nbsp;delfeed.scr
&nbsp;&nbsp;&nbsp;debug&nbsp;sample1.txt&nbsp;<&nbsp;delfeed.scr

&nbsp;&nbsp;&nbsp;hexc&nbsp;sample1.txt&nbsp;sample2.txt&nbsp;0d0a&nbsp;&quot;&quot;

&nbsp;&nbsp;&nbsp;&nbsp;3、直接预制所需文件,不用临时输出,这种方法适用于sample1.txt内容固定时,用编辑程序预先编辑所需要的不带回车符的头文件没有什么大的困难。



还是看不懂
≡≡☆⌒_⌒☆≡■◆■≡☆⌒_⌒☆≡≡    
(の)゛在﹍這個...ロ丗界里ヤ
(の) ╱︶ 誰對o..﹎οО誰錯┈?
 ìòvè ╭☆
╭~~~★ ╭ ︶╮
╱︶(o'.'o)︶╲ ╱︶(-'.'-)︶╲
论坛跳转: