8

我正在编写一个 powershell 脚本,从文件夹中删除某些文件,并将其余文件移动到预定义的子文件夹中。

我的结构看起来像这样

Main
    (Contains a bunch of pdb and dll files)
    -- _publish
        --Website
            (Contains a web.config, two other .config files and a global.asax file)
            -- bin
                (Contains a pdb and dll file)
            -- JS
            -- Pages
            -- Resources

我想在开始移动之前从整个文件结构中删除所有 pdb、config 和 asax 文件。我使用的:

$pdbfiles = Get-ChildItem "$executingScriptDirectory\*.pdb" -recurse

foreach ($file in $pdbfiles) {
    Remove-Item $file
}

对于我需要删除的所有文件类型,依此类推。除了位于网站 bin 文件夹中的 pdb 文件外,它工作得很好。对于网站文件夹中的 ASAX 文件。由于某种原因,它们被 Get-ChildItem 递归搜索忽略。

这是由递归结构中项目的深度引起的吗?或者是别的什么?我该如何修复它,所以它会按照指定的方式删除所有文件。

编辑:我尝试添加 -force - 但它没有改变

答案:以下工作:

$include = @("*.asax","*.pdb","*.config")
$removefiles = Get-ChildItem "$executingScriptDirectory\*" -recurse -force -include $include 

foreach ($file in $removefiles) {
    if ($file.Name -ne "Web.config") {
        Remove-Item $file
    }
}
4

2 回答 2

19
Get-ChildItem -path <yourpath> -recurse -Include *.pdb
于 2012-05-29T11:55:48.163 回答
2

您还可以使用管道进行删除:

Get-ChildItem -path <yourpath> -recurse -Include *.pdb | rm
于 2015-10-01T14:36:26.070 回答