Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 调用具有计算参数的函数_Function_Powershell - Fatal编程技术网

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函数有一些额外的功能,所以这行代码不适合我,不过还是要谢谢你!