我在作爲Mercurial存儲庫的根目錄中運行以下命令。我想刪除任何文件,並以「.hg」開頭的文件夾:PowerShell刪除項目成功但拋出異常
gci -rec -filter ".hg*" | remove-item -recurse -force
奇怪的是,它實際工作,但仍然會產生以下異常:
Get-ChildItem : Could not find a part of the path 'C:\temp\WSCopyTest\MyCompany.Services.DaftPunk\.hg\'.
At line:1 char:4
+ gci <<<< -rec -filter ".hg*" | remove-item -recurse -force
+ CategoryInfo : ReadError: (C:\temp\WSCopyT...es.DaftPunk\.hg:String) [Get-ChildItem], DirectoryNotFoundException
+ FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
因爲異常拋出Get-ChildItem
,我懷疑我對PowerShell中流水線的理解是有缺陷的。幾乎就像Get-ChildItem
找到一個項目,將它傳遞給管道中的下一個cmdlet,然後查找下一個cmdlet?它是如何工作的?
下應該是一個腳本,將複製的問題,但是,在同一臺機器上,它完美的作品:
$repoRoot = "C:\Temp\HgDeleteTest\MyRepo"
remove-item $repoRoot -recurse -force
md $repoRoot
pushd $repoRoot
hg.exe init
add-content ShouldBeLeftBehind.txt "This is some text in a file that should be left behind once the various .hg files/directories are removed."
add-content .hgignore syntax:glob
add-content .hgignore *.dll
add-content .hgignore *.exe
hg.exe commit --addremove --message "Building test repository with one commit."
gci -rec -filter ".hg*" | remove-item -recurse -force
popd
這裏同樣的問題,它在一臺機器上工作,但我得到另一個這個錯誤。 – johntrepreneur
我懷疑它可能是一個PowerShell版本問題,如果有兩組行爲。 – johntrepreneur