中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批处理问题,虚心向高手请教?[求助]
作者:
标题: [求助]批处理问题,虚心向高手请教?[求助] 上一主题 | 下一主题
huaqingyuan
初级用户




积分 183
发帖 15
注册 2003-7-7
状态 离线
『楼 主』:  [求助]批处理问题,虚心向高手请教?[求助]

我想用批处理完成以下功能,请求帮助

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.在批处理中进行数学运算,并付值给变量




[此贴子已经被作者于2003-10-5 9:53:35编辑过]




2003-10-1 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huaqingyuan
初级用户




积分 183
发帖 15
注册 2003-7-7
状态 离线
『第 2 楼』:  

没人会吗?



2003-10-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iceboy
银牌会员




积分 1681
发帖 512
注册 2003-8-2
状态 离线
『第 3 楼』:  

似乎要用到 debug,最省事的方法使用 QB/C



Somehow somewhere I've got to choose.
No matter if it is win or lose.
2003-10-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huaqingyuan
初级用户




积分 183
发帖 15
注册 2003-7-7
状态 离线
『第 4 楼』:  

不知增强的脚本工具行不行

如果批处理不行的话,

请高手帮忙写个程序完成

2003-10-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huaqingyuan
初级用户




积分 183
发帖 15
注册 2003-7-7
状态 离线
『第 5 楼』:  

高手在那啊?
出来帮忙啊!,这个搞出来用处很大的

2003-10-4 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iceboy
银牌会员




积分 1681
发帖 512
注册 2003-8-2
状态 离线
『第 6 楼』:  

先说说你的设想吧,也许可以换一个方法做



Somehow somewhere I've got to choose.
No matter if it is win or lose.
2003-10-4 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huaqingyuan
初级用户




积分 183
发帖 15
注册 2003-7-7
状态 离线
『第 7 楼』:  

关于A问题,我主要是想在DOS下查找关于某个记录的资料,
比如,在网吧用GHOST时,用户名和IP等都一样,这样只要我先用工具获取网卡号
然后查找关于网卡号的记录,就可以得到IP,计算机名等,
能实现这个在无盘PXE中有更大的作用

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

麻烦大家想想办法

2003-10-5 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 8 楼』:  

Re huaqingyuan:

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

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

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

::OP.BAT
@ECHO OFF
SET TABLE=sample.dat
IF [%1]==[] 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 [%4]==[] 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 [%1]==[] 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 [%#VAR#%]==[] GOTO GVEND
ECHO Value of variable is %#VAR#%.
DEL %TEMP%\SETENV.BAT
SET COMMAND=
SET #VAR#=

:GVEND













[此贴子已经被作者于2003-11-19 11:24:58编辑过]






※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2003-10-15 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huaqingyuan
初级用户




积分 183
发帖 15
注册 2003-7-7
状态 离线
『第 9 楼』:  

谢谢!

2003-10-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huaqingyuan
初级用户




积分 183
发帖 15
注册 2003-7-7
状态 离线
『第 10 楼』:  

由于前些时有事,没看到贴,今天看到了,试了一下,关于A问题的加记录部分好象有点问题,也许是我不会用,请willsort兄告知

2003-10-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 11 楼』:  

Re huaqingyuan:

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

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


[此贴子已经被作者于2003-10-31 8:47:31编辑过]






※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2003-10-31 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huaqingyuan
初级用户




积分 183
发帖 15
注册 2003-7-7
状态 离线
『第 12 楼』:  

在次感谢willsort,你确实是批处理的高手

2003-11-17 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huaqingyuan
初级用户




积分 183
发帖 15
注册 2003-7-7
状态 离线
『第 13 楼』:  

修改后的文件现在没法下了,你可以直接贴上来吗?

谢谢了

2003-11-17 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 14 楼』:  

Re huaqingyuan:

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

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

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

   3、其他一些拼写错误;




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2003-11-19 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: