![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 06:50 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 再求个关于变量间赋值的代码,我的脚本就完工了 |
| 可打印版本 2,417 / 18 |
| 第1楼 yardian | 发表于 2006-10-24 20:03 |
| 中级用户 发帖 85 积分 305 | |
|
再求个关于变量间赋值的代码,我的脚本就完工了 a.bat 需求如上,大致意思是:要赋给a.exe 很多变量,而这些变量的数目又不是固定的.不知道如何实现,请各位大侠帮忙. |
|
| 第2楼 不得不爱 | 发表于 2006-10-24 23:49 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
start /b /min a.exe %*
|
|
| 第3楼 namejm | 发表于 2006-10-25 00:33 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
或者你把赋值语句写成 set var=b c d e f 的格式,然后再用 call a.bat %var% 来调用。
|
|
| 第4楼 yardian | 发表于 2006-10-25 07:58 |
| 中级用户 发帖 85 积分 305 | |
|
感谢两位版主的热心!两位版主的好像都不能满足我的需求.首先不好意思,由于太菜对于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后面的赋值也要改了. 还麻烦大家帮帮忙! |
|
| 第5楼 lxmxn | 发表于 2006-10-25 08:05 |
| 版主 发帖 4,938 积分 11,386 | |
|
如果楼主想在批处理运行的时候,及时的给变量赋值,就可以用这句了: 这样,在调用这些变量就可以直接用%var%调用了。比如:start "" /min a.exe &var& |
|
| 第6楼 yardian | 发表于 2006-10-25 08:44 |
| 中级用户 发帖 85 积分 305 | |
|
不是及时赋变量,由于变量复杂度比较高,而且比较多,所以每次都手动输入太麻烦
|
|
| 第7楼 lxmxn | 发表于 2006-10-25 09:22 |
| 版主 发帖 4,938 积分 11,386 | |
|
那楼主的意思是什么呢?是从一个特定的文件中读取参数还是什么呢? |
|
| 第8楼 yardian | 发表于 2006-10-25 10:18 |
| 中级用户 发帖 85 积分 305 | |
|
是的,是从一个特定的文件中读取所有参数
|
|
| 第9楼 lxmxn | 发表于 2006-10-25 10:37 |
| 版主 发帖 4,938 积分 11,386 | |
|
那么就用这个来提取你的参数就可以了: 以后用%var%就可以调用你的参数了。 |
|
| 第10楼 yardian | 发表于 2006-10-25 12:06 |
| 中级用户 发帖 85 积分 305 | |
|
我简单测了一下,结果如下:
a.txt a.bat 结果: D:\>set /p var= 0<a.txt D:\>echo set a=1 set a=1 D:\>pause 请按任意键继续. . . 好像只有第一个值传递成功了 |
|
| 第11楼 lxmxn | 发表于 2006-10-25 12:23 |
| 版主 发帖 4,938 积分 11,386 | |
|
汗一个先。 a.txt里面的内容就直接写参数的序列就可以了啊,不需要用set命令再对其赋值,比如a.txt里面的内容就是"1 2 3 4"就可以了。每个参数用空格分隔一下。 |
|
| 第12楼 yardian | 发表于 2006-10-25 12:40 |
| 中级用户 发帖 85 积分 305 | |
|
不好意思,学的不精.而且有点死.现在基本上是实现了.还有点小问题就是a.txt只能横着写,不能竖着写
|
|
| 第13楼 lxmxn | 发表于 2006-10-25 13:15 |
| 版主 发帖 4,938 积分 11,386 | |
|
再汗一个。。。。。。 为什么要竖着写啊?横着写不是更方便,更美观么? 难不成要搞一个斜着写的出来?? 竖着写就达不到效果了。。。 |
|
| 第14楼 不得不爱 | 发表于 2006-10-25 20:33 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
试下下面的代码,应该
@echo off SETLOCAL ENABLEDELAYEDEXPANSION for /f "tokens=*" %%a in (a.txt) do set a=%%a !a! start /b /min a.exe %a% |
|
| 第15楼 lxmxn | 发表于 2006-10-26 00:17 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by qwe1234567 at 2006-10-25 20:33: 版主的这个代码应该改一下吧。 这里的"set a=%%a !a!"应该改成"set a=!a! %%a"才满足楼主的要求。 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |