Board logo

标题: [求助]批处理问题,虚心向高手请教?[求助] [打印本页]

作者: huaqingyuan     时间: 2003-10-1 00:00    标题: [求助]批处理问题,虚心向高手请教?[求助]

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

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编辑过]



作者: huaqingyuan     时间: 2003-10-2 00:00
没人会吗?


作者: iceboy     时间: 2003-10-2 00:00
似乎要用到 debug,最省事的方法使用 QB/C
作者: huaqingyuan     时间: 2003-10-2 00:00
不知增强的脚本工具行不行

如果批处理不行的话,

请高手帮忙写个程序完成
作者: huaqingyuan     时间: 2003-10-4 00:00
高手在那啊?
出来帮忙啊!,这个搞出来用处很大的
作者: iceboy     时间: 2003-10-4 00:00
先说说你的设想吧,也许可以换一个方法做
作者: huaqingyuan     时间: 2003-10-5 00:00
关于A问题,我主要是想在DOS下查找关于某个记录的资料,
比如,在网吧用GHOST时,用户名和IP等都一样,这样只要我先用工具获取网卡号
然后查找关于网卡号的记录,就可以得到IP,计算机名等,
能实现这个在无盘PXE中有更大的作用

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

麻烦大家想想办法
作者: willsort     时间: 2003-10-15 00:00
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编辑过]



作者: huaqingyuan     时间: 2003-10-26 00:00
谢谢!
作者: huaqingyuan     时间: 2003-10-26 00:00
由于前些时有事,没看到贴,今天看到了,试了一下,关于A问题的加记录部分好象有点问题,也许是我不会用,请willsort兄告知
作者: willsort     时间: 2003-10-31 00:00
Re huaqingyuan:

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

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


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



作者: huaqingyuan     时间: 2003-11-17 00:00
在次感谢willsort,你确实是批处理的高手
作者: huaqingyuan     时间: 2003-11-17 00:00
修改后的文件现在没法下了,你可以直接贴上来吗?

谢谢了
作者: willsort     时间: 2003-11-19 00:00
Re huaqingyuan:

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

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

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

   3、其他一些拼写错误;