使用Robocopy镜像功能时如何彻底屏蔽输出?
解决Robocopy镜像删除时仍输出删除文件信息的问题
你遇到的核心问题是:用Start-Process调用Robocopy时,把重定向符号>nul 2>&1放到了ArgumentList里,这些符号会被当成Robocopy的参数,而非PowerShell的输出重定向指令,所以根本无法屏蔽输出。以下是两种可行的解决方法:
方法一:直接在PowerShell中调用Robocopy
放弃使用Start-Process,直接执行Robocopy命令,PowerShell会正确解析重定向符号:
robocopy.exe $emptyDir $sourcePath /mir /e /np /ns /nc /njs /njh /nfl /ndl >nul 2>&1
如果需要获取命令退出码,执行完后查看$LASTEXITCODE变量即可。
方法二:使用Start-Process的重定向参数
如果必须用Start-Process,请使用它自带的参数实现输出屏蔽:
Start-Process -FilePath "robocopy.exe" -ArgumentList "$emptyDir $sourcePath /mir /e /np /ns /nc /njs /njh /nfl /ndl" -Wait -PassThru -NoNewWindow -RedirectStandardOutput "nul" -RedirectStandardError "nul"
补充说明:你添加的/nfl /ndl参数仅能屏蔽文件和目录列表输出,Robocopy删除文件的提示信息不受这两个参数控制,必须通过输出重定向才能完全屏蔽。
内容的提问来源于stack exchange,提问作者Luis Angel Urena Lopez
相关产品推荐
相关产品推荐

