找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14126|回复: 1

[转载代码] 用PowerShell实现递归还原变量

[复制链接]
发表于 2013-10-18 13:21:37 | 显示全部楼层 |阅读模式
本篇文章引用的小例子来自如下链接:
http://bbs.chinaunix.net/thread-365508-1-1.html

这篇帖子主要讨论了eval的作用, 我们将会就变量展开进行简单的研究.
在PowerShell如果我定义了如下的变量:

PS C:\> $a = 'get-date'; $b = 'a'; $c = 'b'; $d = 'c'
PS C:\> "`$a = {0}`n`$b = {1}`n`$c = {2}`n$d = {3}" -f $a,$b,$c,$d
$a = get-date
$b = a
$c = b
$d = c
PS C:\>


我希望能通过传递$d这个参数, 取得get-date字符串. 因此, 我编写了如下的小函数:

PS C:\> function ier ($cmd) {
>> while (dir -Path variable: -Name | ?{$_ -eq $cmd})
>> {
>>   $cmd = Invoke-Expression `$$cmd
>> }
>> $cmd
>> }
>>
PS C:\>


该函数会查看传递进来的变量是否存在, 如果存在就会被递归的展开, 会输出最后的命令. 最后, 用执行匿名代码段将递归展开的字符串执行:

PS C:\> ier $d
get-date
PS C:\> & $(ier $d)

2007年7月6日 1:30:03

PS C:\>


时间不早了...准备休息了..

http://blog.chinaunix.net/uid-9781829-id-1997701.html
发表于 2013-10-18 18:53:13 | 显示全部楼层
此文作者的脑袋是老旧脑袋.
其思路就是老旧的思路.即第一代脚本,
总之我认为此人,[精通第一代脚本之妙,不懂面向对象的第二代脚本之妙]即总想着搞字符串操作,不想着用属性方法解决问题
写脚本这家伙总想把python搞成bash,总想把powershell搞成bat或bash.
鉴定完毕
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:28 , Processed in 0.009085 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表