Function 调用具有计算参数的函数
我是新来的。我正在调用一个我创建的函数,它将我的两个参数分离为多个参数。如何使计算出的参数在传递之前进行实际计算Function 调用具有计算参数的函数,function,powershell,Function,Powershell,我是新来的。我正在调用一个我创建的函数,它将我的两个参数分离为多个参数。如何使计算出的参数在传递之前进行实际计算 dir -Recurse -Path $source | foreach {MoveFile $_.FullName ($destination + "\" + $_.Extension.Substring(1, ($_.Extension.Length - 1))) } 这一部分: ($destination + "\" + $_.Extension.Substring(1, (
dir -Recurse -Path $source | foreach {MoveFile $_.FullName ($destination + "\" + $_.Extension.Substring(1, ($_.Extension.Length - 1))) }
这一部分:
($destination + "\" + $_.Extension.Substring(1, ($_.Extension.Length - 1))
这是有问题的。它将其分离而不是计算。我做错了什么?将参数表达式放在parens中是正确的。在我的机器上,当我将该代码段与复制项一起使用时,它工作得很好。您可能需要显示MoveFile函数的外观。可能是在您的情况下,$\扩展名的计算结果为$null。您似乎没有筛选具有扩展名的文件 顺便说一句,使用内置移动项,您可以将其简化为:
dir $source -r *.* | Move-Item -Dest {"$destination\$($_.Extension.Substring(1))"}
有一个重载
String.Substring
,它只获取开始索引,并提供从该点到结束的字符串的其余部分。因此,您不必指定字符串其余部分的长度。您得到的错误是什么样子的?这对问题并不重要。基本上,我的函数只是将$destination
作为参数,而不是我试图生成的串联值。显然这对问题很重要。感谢您的解决方案!成功了。不幸的是,我的MoveFile函数有一些额外的功能,所以这行代码不适合我,不过还是要谢谢你!