中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-15 21:31
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批处理问题,虚心向高手请教?[求助] 查看 2,355 回复 13
楼 主 [求助]批处理问题,虚心向高手请教?[求助] 发表于 2003-10-01 00:00 ·  中国 湖北 荆门 京山市 电信
初级用户
积分 183
发帖 15
注册 2003-07-07 00:00
UID 6493
性别 男
状态 离线
我想用批处理完成以下功能,请求帮助

a.在文本中查找指定字符串"LIZI",若找到将其空格后的文本以空格为界付值给出%1,%2,%3,%4,%5,%6,%7,%8,%9……直到检测到回车符,并退出.
若找不到就在这文本里加一行,內容是一字符串"LIZI"开头的并加入%1,%2,%3,%4,%5,%6,%7,%8,%9……的默认值也就是第一行的值
例在AAA.TXT中有
name date1 date2 date3
lizi 001 002 003
在AAA.TXT找lizi就有%1=001,%2=002,%3=003
在AAA.TXT找name4,AAA.TXT中无变为
name date1 date2 date3
lizi 001 002 003
name4 date1 date2 date3

b.在批处理中进行数学运算,并付值给变量




2 发表于 2003-10-02 00:00 ·  中国 湖北 荆门 京山市 电信
初级用户
积分 183
发帖 15
注册 2003-07-07 00:00
UID 6493
性别 男
状态 离线
没人会吗?

3 发表于 2003-10-02 00:00 ·  中国 湖北 武汉 联通
银牌会员
★★★
积分 1,681
发帖 512
注册 2003-08-02 00:00
UID 7953
性别 男
状态 离线
似乎要用到 debug,最省事的方法使用 QB/C
Somehow somewhere I've got to choose.
No matter if it is win or lose.
4 发表于 2003-10-02 00:00 ·  中国 湖北 荆门 京山市 电信
初级用户
积分 183
发帖 15
注册 2003-07-07 00:00
UID 6493
性别 男
状态 离线
不知增强的脚本工具行不行

如果批处理不行的话,

请高手帮忙写个程序完成
5 发表于 2003-10-04 00:00 ·  中国 湖北 荆门 京山市 电信
初级用户
积分 183
发帖 15
注册 2003-07-07 00:00
UID 6493
性别 男
状态 离线
高手在那啊?
出来帮忙啊!,这个搞出来用处很大的
6 发表于 2003-10-04 00:00 ·  中国 湖北 武汉 联通
银牌会员
★★★
积分 1,681
发帖 512
注册 2003-08-02 00:00
UID 7953
性别 男
状态 离线
先说说你的设想吧,也许可以换一个方法做
Somehow somewhere I've got to choose.
No matter if it is win or lose.
7 发表于 2003-10-05 00:00 ·  中国 湖北 荆门 京山市 电信
初级用户
积分 183
发帖 15
注册 2003-07-07 00:00
UID 6493
性别 男
状态 离线
关于A问题,我主要是想在DOS下查找关于某个记录的资料,
比如,在网吧用GHOST时,用户名和IP等都一样,这样只要我先用工具获取网卡号
然后查找关于网卡号的记录,就可以得到IP,计算机名等,
能实现这个在无盘PXE中有更大的作用

关于B问题,eval.exe可以实现,但是它没有付值给变量.也许是我没有正确的使用,

麻烦大家想想办法
8 发表于 2003-10-15 00:00 ·  中国 山东 烟台 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re huaqingyuan:

关于问题A,因为不了解你的具体需求,所以只写了一个空泛的框架,如果要符合你的要求,应该需要修改某些细节。

关于问题B,我的代码提供的是将命令输出结果保存为环境变量的通用办法,当然存在其他的解决方法,只不过这种更简单一些;至于eval.exe的细节我不是很清楚。

以下附录二者源代码,完整内容请下载文件打开附件(第一次使用文件上传功能,如果出错请见谅)

::OP.BAT
@ECHO OFF
SET TABLE=sample.dat
IF == GOTO OPHELP
IF NOT EXIST %TABLE% GOTO OPERROR1

:OPMAIN
FIND " %1 " %TEMP%\RECORD.BAT
IF NOT ERRORLEVEL 1 GOTO OPLIST
IF NOT ERRORLEVEL 2 GOTO OPAPPEND
GOTO OPERROR2

:OPLIST
ECHO Record "%1" matched.
ECHO.
ECHO >%1.BAT @ECHO OFF
ECHO >>%1.BAT ECHO 姓名: %1
ECHO >>%1.BAT ECHO 姓别: %%1
ECHO >>%1.BAT ECHO 年龄: %%2
ECHO >>%1.BAT ECHO 爱好: %%3 %%4 %%5 %%6 %%7 %%8 %%9
CALL %TEMP%\RECORD.BAT
ECHO.
ECHO Record "%1" displayed.
DEL %TEMP%\RECORD.BAT
DEL %1.BAT
GOTO OPEND

:OPAPPEND
ECHO Record "%1" NOT matched!
ECHO.
IF == GOTO OPEND
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9 >> %TABLE%
ECHO.
ECHO Record "%1" appended.
GOTO OPEND

:OPHELP
ECHO.
ECHO Sample of Table Operation.
ECHO Usage: %0 record-key
ECHO or: %0 record-key data1 data2 data3
ECHO.
GOTO OPEND

:OPERROR1
ECHO.
ECHO Data file "%TABLE%" NOT exist!
ECHO.
GOTO OPEND

:OPERROR1
ECHO.
ECHO Failed to match record "%1"!
ECHO.
GOTO OPEND

:OPEND
SET TABLE=

::GETVALUE.BAT
@ECHO OFF
IF NOT == GOTO GVMAIN
:GVHELP
ECHO.
ECHO Get result of command with environment variable.
ECHO Usage: %0 command
ECHO Exaple: %0 CD
ECHO.
GOTO GVEND

:GVMAIN
SET COMMAND=%1 %2 %3 %4 %5 %6 %7 %8 %9
COPY SETENV.DAT %TEMP%\SETENV.BAT > NUL
%COMMAND% >> %TEMP%\SETENV.BAT
CALL %TEMP%\SETENV.BAT
IF == GOTO GVEND
ECHO Value of variable is %#VAR#%.
DEL %TEMP%\SETENV.BAT
SET COMMAND=
SET #VAR#=

:GVEND













※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
9 发表于 2003-10-26 00:00 ·  中国 湖北 荆门 京山市 电信
初级用户
积分 183
发帖 15
注册 2003-07-07 00:00
UID 6493
性别 男
状态 离线
谢谢!
10 发表于 2003-10-26 00:00 ·  中国 湖北 荆门 京山市 电信
初级用户
积分 183
发帖 15
注册 2003-07-07 00:00
UID 6493
性别 男
状态 离线
由于前些时有事,没看到贴,今天看到了,试了一下,关于A问题的加记录部分好象有点问题,也许是我不会用,请willsort兄告知
11 发表于 2003-10-31 00:00 ·  中国 山东 烟台 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re huaqingyuan:

抱歉,源程序出了点小问题,怪我调试不周。现将修改后的文件附上:打开附件

若有其他问题,请及时告知。


※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
12 发表于 2003-11-17 00:00 ·  中国 黑龙江 大庆 联通
初级用户
积分 183
发帖 15
注册 2003-07-07 00:00
UID 6493
性别 男
状态 离线
在次感谢willsort,你确实是批处理的高手
13 发表于 2003-11-17 00:00 ·  中国 黑龙江 大庆 联通
初级用户
积分 183
发帖 15
注册 2003-07-07 00:00
UID 6493
性别 男
状态 离线
修改后的文件现在没法下了,你可以直接贴上来吗?

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

我对原贴的代码已经做了修改,主要有以下几点:

1、:OPAPPEND中的第四句,ECHO之后多增加了一个空格;
主要是为了通过FIND " %1 ",以避免ABCD与BCD的误匹配;

2、将变量串的引用标记由单引号改为了双引号;
论坛似乎对单引号的处理比较特别,总是将它双倍显示,对原代码没有什么影响;

3、其他一些拼写错误;
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
论坛跳转: