我有以下命令:
Get-ChildItem $build_path `
-Include *.bak, *.orig, *.txt, *.chirp.config `
-Recurse | Remove-Item -Verbose
Run Code Online (Sandbox Code Playgroud)
清除VS解决方案的build文件夹中的某些文件.我使用Verbose开关,以便我可以看到哪些文件被删除.它工作正常,但输出太冗长:
VERBOSE: Performing operation "Remove File" on Target "R:\Visual Studio 2010\Projects\SomeProject\SomeProject.Web.build\App_Readme\glimpse.mvc3.readme.txt".
VERBOSE: Performing operation "Remove File" on Target "R:\Visual Studio 2010\Projects\SomeProject\SomeProject.Web.build\App_Readme\glimpse.readme.txt".
Run Code Online (Sandbox Code Playgroud)
我只需要看到类似的东西:
Removing file \App_Readme\glimpse.mvc3.readme.txt".
Removing file \App_Readme\glimpse.readme.txt".
...
Run Code Online (Sandbox Code Playgroud)
我知道我可以用foreach语句和Write-Host命令来做到这一点,但我相信它可以用一些流水线或其他东西来完成.有任何想法吗?
使用ForEach-Object
非常简单:
Get-ChildItem $build_path `
-Include *.bak, *.orig, *.txt, *.chirp.config `
-Recurse | foreach{ "Removing file $($_.FullName)"; Remove-Item $_}
Run Code Online (Sandbox Code Playgroud)
正如@ user978511指出的那样,使用详细输出更复杂:
$ps = [PowerShell]::Create()
$null = $ps.AddScript(@'
Get-ChildItem $build_path `
-Include *.bak, *.orig, *.txt, *.chirp.config `
-Recurse | Remove-Item -Verbose
'@)
$ps.Invoke()
$ps.Streams.Verbose -replace '(.*)Target "(.*)"(.*)','Removing File $2'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14000 次 |
最近记录: |