|
yardian
中级用户
积分 305
发帖 85
注册 2005-5-23
状态 离线
|
『楼 主』:
再求个关于变量间赋值的代码,我的脚本就完工了
@echo off
set 1=b
set 2=c
set 3=d
set 4=c
set 5=e
........
set a=%1% %2% %3% %4% %5% ....
call a.bat %a% a.bat
start /b /min a.exe 需求如上,大致意思是:要赋给a.exe 很多变量,而这些变量的数目又不是固定的.不知道如何实现,请各位大侠帮忙.
|
|
2006-10-24 20:03 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-10-24 23:49 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
3 楼』:
或者你把赋值语句写成 set var=b c d e f 的格式,然后再用 call a.bat %var% 来调用。
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-10-25 00:33 |
|
|
yardian
中级用户
积分 305
发帖 85
注册 2005-5-23
状态 离线
|
『第
4 楼』:
感谢两位版主的热心!两位版主的好像都不能满足我的需求.首先不好意思,由于太菜对于qwe1234567的解法,我没有看懂,不知道如何利用.而对于namejm的解法.不能符合要求.因为如果设set var=b c d e f.由于b c d e f的值不是固定的.就是说可能这次是b c d e f而下次启动就是b c d e f g 了.如果每次都去改var变量的话.就失去意义了.
我的想法是:将
set 1=b
set 2=c
set 3=d
set 4=c
set 5=e
........写成一个文件(如a.txt),然后用一个for语句读取这个文件(a.txt),然后赋值.
如:for /f "tokens=2 delims== " in (a.txt) do set var=%1% %2% %3% %4% ...
显然这样写失去了脚本的意义.因为如果a.txt变了,那么var后面的赋值也要改了.
还麻烦大家帮帮忙!
|
|
2006-10-25 07:58 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
5 楼』:
如果楼主想在批处理运行的时候,及时的给变量赋值,就可以用这句了:
@echo off
set /p var= 请输入你要赋给变量的值: 这样,在调用这些变量就可以直接用%var%调用了。比如:start "" /min a.exe &var&
|
|
2006-10-25 08:05 |
|
|
yardian
中级用户
积分 305
发帖 85
注册 2005-5-23
状态 离线
|
『第
6 楼』:
不是及时赋变量,由于变量复杂度比较高,而且比较多,所以每次都手动输入太麻烦
|
|
2006-10-25 08:44 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
7 楼』:
那楼主的意思是什么呢?是从一个特定的文件中读取参数还是什么呢?
|
|
2006-10-25 09:22 |
|
|
yardian
中级用户
积分 305
发帖 85
注册 2005-5-23
状态 离线
|
『第
8 楼』:
是的,是从一个特定的文件中读取所有参数
|
|
2006-10-25 10:18 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
9 楼』:
那么就用这个来提取你的参数就可以了:
set /p var=<filename
echo %var%
start /min a.exe %var%
以后用%var%就可以调用你的参数了。
|
|
2006-10-25 10:37 |
|
|
yardian
中级用户
积分 305
发帖 85
注册 2005-5-23
状态 离线
|
『第
10 楼』:
我简单测了一下,结果如下:
a.txt
set a=1
set b=2
set c=3
set d=4 a.bat
set /p var=<a.txt
echo %var%
pause 结果:
D:\>set /p var= 0<a.txt
D:\>echo set a=1
set a=1
D:\>pause
请按任意键继续. . .
好像只有第一个值传递成功了
|
|
2006-10-25 12:06 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
11 楼』:
汗一个先。
a.txt里面的内容就直接写参数的序列就可以了啊,不需要用set命令再对其赋值,比如a.txt里面的内容就是"1 2 3 4"就可以了。每个参数用空格分隔一下。
|
|
2006-10-25 12:23 |
|
|
yardian
中级用户
积分 305
发帖 85
注册 2005-5-23
状态 离线
|
『第
12 楼』:
不好意思,学的不精.而且有点死.现在基本上是实现了.还有点小问题就是a.txt只能横着写,不能竖着写
|
|
2006-10-25 12:40 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
13 楼』:
再汗一个。。。。。。
为什么要竖着写啊?横着写不是更方便,更美观么?
难不成要搞一个斜着写的出来??
竖着写就达不到效果了。。。
|
|
2006-10-25 13:15 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-10-25 20:33 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
15 楼』:
Quote: | Originally posted by qwe1234567 at 2006-10-25 20:33:
试下下面的代码,应该[可以满足你的要求
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%a in (a.txt) do set a=%%a !a!
start /b /min a.exe %a% |
|
版主的这个代码应该改一下吧。
这里的"set a=%%a !a!"应该改成"set a=!a! %%a"才满足楼主的要求。
|
|
2006-10-26 00:17 |
|