Board logo

标题: 菜鸟求助! [打印本页]

作者: THREEKS     时间: 2007-4-20 09:57    标题: 菜鸟求助!

有一个别人封装好了的A.bat文件,完成了特定的工作;只是A.bat有3个参数需要输入,每次使用A.bat都要输入3个参数,比较麻烦;
请问各位如何写一个B.bat文件,从某个特定的文件c.c中读取某特定字符串,作为参数传给A.bat;比如
c.c中有以下特定字符串:
////#Hello
////##World
////###Campion

B.bat中能够获取到参数Hello , World , Campion并将这些信息传递给A.bat

Call A Hello World Campion

请问,这个B.bat该怎么写啊?

[ Last edited by THREEKS on 2007-4-19 at 09:23 PM ]
作者: lxmxn     时间: 2007-4-20 23:50

@echo off
for /f "tokens=* delims=/#" %%a in (c.c) do set a=a %%a
Call A Hello World Campion

作者: THREEKS     时间: 2007-4-21 06:49
感谢lxmxn的回答,不是这个意思;
我的意思是:一个B.bat从c.c文件中读取A.bat所需要的参数,然后调用A.bat。
Call A 参数1 参数2 参数3 ;
参数1~3是B.bat从c.c中读取的!
作者: everest79     时间: 2007-4-21 06:53
二楼不是按你要求做了吗?
作者: THREEKS     时间: 2007-4-21 08:09
二楼,"CALL A Hello World Campion"这句调用A.bat传递的参数是手写写入的;是我没有说清楚,sorry!
c.c中有以下特定字符串:
////#Hello
////##World
////###Campion

遇到"////#"则将其后的第一个单词读出作为A.bat的第一个参数
遇到"////##"则将其后的第一个单词读出作为A.bat的第二个参数
遇到"////###"则将其后的第一个单词读出作为A.bat的第三个参数

这里的hello,world,Campion只是一个例子,是变化的!

是不是还有方法,当遇到"////#"就将其后的第一个单词作为A.bat的第一个参数,第二个单词作为A.bat的第二参数,第三个单词作为A.bat的第三个参数?

感谢各位的回答!
作者: everest79     时间: 2007-4-21 10:10
大哥,你找est吧,他在行,让他帮你写一个
作者: lxmxn     时间: 2007-4-21 10:26
哦,不好意思,是我的笔误。
@echo off
for /f "tokens=* delims=/#" %%a in (c.c) do call set b=%%b%%%%a
Call A "%b%"
代码又修正了一下,这样也应该可以的。

[ Last edited by lxmxn on 2007-4-22 at 08:01 PM ]
作者: luowei144     时间: 2007-4-21 10:44
....呵 都是高手
作者: THREEKS     时间: 2007-4-23 03:51


  Quote:
Originally posted by lxmxn at 2007-4-20 09:26 PM:
哦,不好意思,是我的笔误。
@echo off
for /f "tokens=* delims=/#" %%a in (c.c) do set a=a %%a
Call A %a%

c.c中文件:
////#P1
////##P2
////###P3

ldjks

wjfjs

//===========A.bat======================
echo %1

//===========B.bat======================
@echo off
for /f "tokens=* delims=/#" %%a in (c.c) do set a=a %%a
Call A %a%
结果显示为
a
请按任意键继续.......

感谢lxmxn兄的回答,能不能告诉我 /f "tokens=* delims=/#" 的意义,或者告诉我哪里可以找到这些符号的用法,谢谢!
作者: flyinspace     时间: 2007-4-23 04:07
for /?
作者: lxmxn     时间: 2007-4-23 08:55
Re THREEKS:

不好意思,大意了,现修改代码如下:
@echo off&Setlocal EnableDelayedExpansion
for /f "tokens=* delims=/#" %%a in (c.c) do set a=!a!%%a
Call A "%a%"

作者: THREEKS     时间: 2007-4-24 09:25


  Quote:
Originally posted by lxmxn at 2007-4-22 07:55 PM:
Re THREEKS:

不好意思,大意了,现修改代码如下:
@echo off&Setlocal EnableDelayedExpansion
for /f "tokens=* delims=/#" %%a in (c.c) do set a=!a!%%a
Call A  ...

结果显示为:
    "P1 P2 P3 ldjks wjfjs "
    请按任意键继续. . .

只是把整个文件除了"/"和"#"字符都去除了!

谢谢你的回答!

在坛子里看了高手的代码,跟着改了一下居然能成成功了
能帮我解释一下吗?
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('findstr /i /c:"////#" c.c') do (
        set "a=%%a"
        set "a=!a:>= !"
        set "a=!a:*////#=!"
        goto :gcf
)
echo 没有找到
pause
goto :eof
:gcf
    call A %a%