中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-04 07:01
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何输出特殊字符,比如“>>” 查看 884 回复 11
楼 主 如何输出特殊字符,比如“>>” 发表于 2007-04-24 10:16 ·  美国 纽约州 拿骚 牡蛎湾 Cablevision系统控股公司
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
我的目的是在主批处理里面,动态产生子批处理文件。

最后子批处理文件中有一句应该是:

echo check-%%A-OK >>check_it.txt

我现在遇到的问题是,怎么在主批处理里面,输出这个含有特殊字符的句子。


发现:
echo(
echo aaa >> aaa.txt
) > bb.txt

会产生两个文件,aaa和bb,bb中不是我要的结果。

echo(echo aaa >> aaa.txt) > bb.txt
只产生bb,也不是我要的结果。
2 发表于 2007-04-24 10:20 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
^>^>
3 发表于 2007-04-24 10:22 ·  IANA 本机地址
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
我的本来的目的是,完成了部分检测只好,记录一下,下次就不重复检测了。


对于要进行几千(1000~5000)的检测的处理,想要将检测过的通过某种方式记录下来,期望电脑死机或者重启之后,能尽量少的检测曾经检测过的,继续检测还没检测过的部分,以此来缩短总的检测时间。
请问大家,有什么高效的办法吗?
4 发表于 2007-04-24 14:26 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
To honghunter:

兄可以将问题描述得更具体一些,方面大家的理解和及时解决你的问题。
5 发表于 2007-04-24 22:47 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 302
发帖 138
注册 2007-03-29 02:33
19年会员
UID 83224
性别 男
状态 离线
如果楼主想要的是在check_it.txt中有检测某条记录成功信息,在b.txt中显示成功信息的日志信息的话,2条echo就可以了,用转意字"^"输出">"
echo check-%%A-OK>>check_it.txt
echo check-%%A-OK^>^>check_it.txt>b.txt
6 发表于 2007-04-25 01:12 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
应该是echo echo check-%%%%A-OK^>^>check_it.txt>b.txt吧?
7 发表于 2007-04-25 11:18 ·  美国
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
实际情况是这样,我用批处理来连接一组小工具和其他批处理。用来下载漫画,一部漫画常常有几千个图片文件。

因此往往难以一次下载完成。

因此我希望能对于已经完成的部分记录下来,重新运行的时候,可以跳过这些已经完成下载的。

然后我使用了一个可能有点奇怪的办法,将全部需要下载的图片,分别放在多个子批处理文件中,类似:

REM BATCH FILES: 0
call D:\dp_dev\comic.zpoo.com\ws\sub_get_img.bat "http://comics.zpoo.com/0k00016/Vol_0001/001_IZwZsX.jpg" 0k00016 Vol_0001 001_IZwZsX.jpg
call D:\dp_dev\comic.zpoo.com\ws\sub_get_img.bat "http://comics.zpoo.com/0k00016/Vol_0001/006_wb632L.jpg" 0k00016 Vol_0001 006_wb632L.jpg
call D:\dp_dev\comic.zpoo.com\ws\sub_get_img.bat "http://comics.zpoo.com/0k00016/Vol_0001/011_2DOXG3.jpg" 0k00016 Vol_0001 011_2DOXG3.jpg
call D:\dp_dev\comic.zpoo.com\ws\sub_get_img.bat "http://comics.zpoo.com/0k00016/Vol_0001/016_otQPi9.jpg" 0k00016 Vol_0001 016_otQPi9.jpg
。。。
然后在这个子批处理的最后,记录一个标志到文件中,表示这个部分已经完成了。
下次主批处理再启动的时候,就不运行这个子批处理文件了。

当主批处理中检测发现所有的子批处理文件都运行完成之后,就表示全部下载完成了。那么就可以清理全部临时文件,完成工作了。
8 发表于 2007-04-25 13:46 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
感觉你这样弄复杂了。

你可以这样,把要下载的连接全部放在1.txt中,要下载的时候,直接读取1.txt文件下载,每下载一个,就记录这个连接到2.txt中,再下载的时候,根据1.txt和2.txt来下载剩下的部分。

或许你可以用curl或者wget来实现你的目的比较方便。
9 发表于 2007-04-25 21:13 ·  中国 上海 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
我就是想要找到一个大批量处理的时候,记录中间过程的方式。
我说的大批量是只在电脑一次开机的时间段里面。
所以也可能只这样的极端情况:总共只要处理几十个,但是某次开机只开了半小时,半小时里面只处理了1、2个,但是还是记录下来,下次能继续。

对于纯粹下载,确实可以使用curl或者wget的相应功能,我现在用的wget,不多没有去研究那个功能。

可能是因为最近对于批处理非常干兴趣,所以想要通过批处理来解决这个问题。
10 发表于 2007-04-25 21:15 ·  中国 上海 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
另外,我现在还有个问题,就是不知道是不是调用call的层次太深,或者次数太多。 批处理文件会傻掉,然后系统保存。所用批处理都不在工作。
11 发表于 2007-04-26 06:34 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
如果不印象你操作的话,你可以将call换成start命令试试。

或者这样:
....................
call :download "url"
goto :eof

:download
start "" "D:\dp_dev\comic.zpoo.com\ws\sub_get_img.bat %1 "
echo %~1 >>record.txt
goto :eof
12 发表于 2007-04-26 09:22 ·  中国 四川 成都 温江区 电信
新手上路
积分 8
发帖 3
注册 2007-01-07 08:35
19年会员
UID 75708
性别 男
状态 离线
用 》代替
论坛跳转: