中国DOS联盟论坛

中国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:
试下下面的代码,应该
@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"才满足楼主的要求。
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023