中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-16 06:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理能实现序列数吗? 查看 1,612 回复 7
楼 主 批处理能实现序列数吗? 发表于 2005-11-22 23:46 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线
比如要产生:1、2、3……999等序列数,咋办?

要求不能使用xp下的命令。
2 发表于 2005-11-23 07:57 ·  中国 广东 广州 白云区 电信
荣誉版主
★★★
积分 718
发帖 313
注册 2005-09-26 00:00
UID 42844
性别 男
状态 离线
"要求不能使用xp下的命令。" 这怎么理解?也就只能用DOS的COMMAND?

如果那样的话,用WAIT 和COUNTER 应该可以实现.思路:参考PLC编程那样用"定时器与计数器接力"来实现长延时方式,定时驱动,计数步进激活.

不过BATCH FILE 可能会有更简单方式.请大家讨论:>
3 发表于 2005-11-23 19:42 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
UID 15812
性别 男
来自 广东广州
状态 离线
用第三方工具Strings.com可以做到。
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
4 发表于 2005-11-25 21:37 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re bush:

最近似乎有许多需要在 MSDOS/Win9x_COMMAND 下解决的问题,这与我三年前的境遇十分相似,颇有他乡故知之感。

关于产生序列数,我记得曾在一篇过去的回帖中提及,现在很难找到了;如果有时间,我会将之整理到我 “批处理编程的异类” 这篇主题中,敬请等待。

现提供一个比较类似的代码,其中使用双重循环嵌套产生和处理了带前缀0和不带前缀0-9和10-99之间的序列数。

将文件名改为001.txt 010.txt...100.txt
http://www.cn-dos.net/forum/viewthread.php?tid=14512

[ Last edited by willsort on 2005-11-25 at 21:54 ]
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
5 发表于 2005-11-26 00:07 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线
谢谢willsort,我的问题已经解决了!
6 谈谈最近用批处理解决问题一例(序列)——献丑了 发表于 2005-11-26 00:12 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线
起因是这样的,拿到一个网站的下载包,回来一看是残缺不全的。要核对后才知道差哪些文件,苦差事!而这些文件名是由序列数构成的,像这样:www.xxx.com/xxx/file1.html、www.xxx.com/xxx/file2.html……www.xxx.com/xxx/file389.html
鼓捣半天,弄了些批处理解决,思路是先生成序列数,再用exist判断。

开始之前为稳妥起见,把.html改为了.htm
a.bat
b 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

;实际上第一个批处理文件也是用批处理生成的。
b.bat
@echo off
for %%a in (1,2,3,4,5,6,7,8,9) do call c node%%a.htm
:redo
if "%1" == "" goto end
for %%a in (0,1,2,3,4,5,6,7,8,9) do call c node%1%%a.htm
if errorlevel 2 goto end
shift
goto redo
:end

c.bat
@echo off
if not exist %1 echo %1 >> urls.lst
echo on

最后得到的urls.lst就是需要的文件。嗬嗬,再批处理下载去~

[ Last edited by bush on 2005-11-26 at 00:13 ]
7 发表于 2005-11-26 11:42 ·  中国 辽宁 锦州 中移铁通
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
UID 40733
性别 男
状态 离线
要是在 CMD 下简单了,一条语句就能办到。

for /l %i in (1,1,389) do @if not exist file%i.html echo.file%i.html>>urls.lst


这样下载的事我一般用 curl 或 wget 来干,然后再批量整理,很省事。
8 发表于 2005-11-26 17:21 ·  中国 山西 大同 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线

—————————————— willsort 版务记录 ——————————————
合并主题:{17950}谈谈最近用批处理解决问题一例(序列)——献丑了
合并理由:二主题存在上下文的直接联系
—————————————— willsort 版务记录 ——————————————



:: Count.bat - Generate a serial of numbers
:: Will Sort - 2005-11-26 - WinXP_CMD/MSDOS7.10/MSDOS6.22
:: 说明:一个可独立运行的示例程序,产生 1~123 之间的序列数输出到文件中
:: 可以将它简单地修改,以产生任意位数、任意区间、任意格式的的序列数
:: 甚至小数也是有可能的产生的。
:: 链接:http://www.cn-dos.net/forum/viewthread.php?tid=17883
@echo off
if "%1"==":" goto %2
set _prog=%0
call %_prog% : loop1 0 1 2 3 4 5 6 7 8 9
set _prog=
set _start=
set _break=
goto end

:loop1
if "%3"=="" goto end
if "%3"=="0" call %_prog% : loop2 0 1 2 3 4 5 6 7 8 9
:: 如果产生的序列数需要前缀0,则省略上一行,下一行的 if not "%3"=="0" 也须删去
if not "%3"=="0" call %_prog% : loop2 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39
if "%_break%"=="true" goto end
shift
goto loop1

:loop2
if "%3"=="" goto end
if "%3"=="0" call %_prog% : loop3 0 1 2 3 4 5 6 7 8 9
:: 如果产生的序列数需要前缀0,则省略上一行,下一行的 if not "%3"=="0" 也须删去
if not "%3"=="0" call %_prog% : loop3 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39
if "%_break%"=="true" goto end
shift
goto loop2

:loop3
if "%3"=="" goto end
if "%3"=="1" set _start=true
if "%_start%"=="true" echo.%3>>sn.txt
:: 上一行是计数的功能代码,示例仅将数字输出到文件中
if "%3"=="123" set _break=true
if "%3"=="123" goto end
:: _start 是开始计数的标记,1 是开始计数的边界
:: _break 是中断计数的标记,123 是中断计数的边界
shift
goto loop3

:end


[ Last edited by willsort on 2005-11-26 at 18:16 ]
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
论坛跳转: