中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 再求个关于变量间赋值的代码,我的脚本就完工了
« [1] [2] »
作者:
标题: 再求个关于变量间赋值的代码,我的脚本就完工了 上一主题 | 下一主题
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
来自 四川南充
状态 离线
『第 2 楼』:  

start /b /min a.exe %*



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
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
来自 四川南充
状态 离线
『第 14 楼』:  

试下下面的代码,应该[可以满足你的要求
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%a in (a.txt) do set a=%%a !a!
start /b /min a.exe %a%




我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: