由于调用深度溢出,脚本失败。调用深度达到了 1001,最大为 1000。


PowerShell交流中心分类: Questions由于调用深度溢出,脚本失败。调用深度达到了 1001,最大为 1000。
0
wr4719 asked 8 年 ago

function copyto { param( [Parameter(ValueFromPipeline=$true)] $InputObject ) process { $file = Get-Content “1.txt” Get-Content “1.txt” |%{Copy-Item $file $InputObject -force } } } “D:\scripts”| .\copyto

3 Answers
1
Best Answer
Mooser Lee 管理员 answered 8 年 ago

你使用了最简单粗暴的递归,系统栈溢出。建议将递归改成非递归调用,我在《PowerShell访问便携式媒体设备(MTP)文件系统》中有一段类似的递归转换成非递归调用的实现,你可以参考。

xiaoluo replied 8 年 ago

绝大多数递归算法在实际操作过程中需要转换成非递归,不然太坑爹了。

0
wr4719 answered 8 年 ago

function copyto { param( [Parameter(ValueFromPipeline=$true)] $InputObject ) process { $file = Get-Content “1.txt” Get-Content “1.txt” |%{Copy-Item $file $InputObject -force } }}”D:\scripts”| .\copyto

0
wr4719 answered 8 年 ago

Start your code herefunction copyto { param( [Parameter(ValueFromPipeline=$true)] $InputObject ) process { $file = Get-Content “1.txt” Get-Content “1.txt” |%{Copy-Item $file $InputObject -force } }}”D:\scripts”| .\copyto