Deep BlueVBScriptWMIPHPC语言JavaScriptWindows API路由器Windows函数Python

一个复杂的VBS脚本问题——变量的变量

如果说之前写的《一个简单的VBS脚本问题——两数相加》没有什么技术含量,那么这个问题就相对比较有技术含量了。一个很久以前别人问的问题:

话说。。有a1、a2、a3…..a100这100个变量,不是数组,有没办法快速把他们加起来。。。
for i=1 to 100 step 1
a=a+a & i
next
我试了不行。。

自己先思考一下怎么做吧,我已经把这100个变量准备好了,点击这里获取。随机生成了100个[1,100]之间的数,所有数的和为5076,看看你算对了吗?

看到这个问题,我最先想到的是PHP,用变量的变量很容易实现:

<?php
/*************************
Author: Demon
Website: http://demon.tw
E-mail: 380401911@qq.com
*************************/
//此处省略100个变量
for($i = 1; $i <= 100; $i++)
{
    $sum = $sum + ${"a$i"};
}
echo $sum;
?>

但是别人问的是VBS,而不是PHP。按照他给出的代码,他也是想用变量的变量来实现,只可惜VBS中没有这种特性。

这个问题我当时想了好久,似乎也只能一个一个变量的加了,于是告诉他,这在VBS中无法实现。但是今天却无意中想到了实现的方法:

'Author: Demon
'Website: http://demon.tw
'E-mail: 380401911@qq.com
'此处省略100个变量
For i = 1 To 100
    str = str & "a" & i & "+"
Next
str = Left(str, Len(str) - 1)
WScript.Echo Eval(str)

使用Eval可以用字符串动态构造出代码,在很多VBS病毒里都能看到Eval的影子,我当时怎么就没想到Eval呢?看来真的是不写病毒好多年。


http://ken.gw.to/