PowerShell - 使用-Recurse和-Filter附加到目录

时间:2015-09-10 20:51:21

标签: powershell filter get-childitem

我正在尝试查找目录及其所有子文件夹中的所有.aspx个文件,以便我可以在<head>标记下添加标记。父目录中可能包含.aspx个文件以及子文件夹。

换句话说,我希望选择该目录中的所有.aspx文件以及其子文件夹中的所有.aspx文件,这些子项中的所有.aspx个文件等。我正在使用以下PowerShell代码片段来执行此操作:

$files = Get-ChildItem -Path C:\Users\apgdy\Downloads\test_proj -recurse -filter "*.aspx"

当我在PowerShell控制台中运行它并显示$files的内容时,我得到了我期望在屏幕缓冲区中显示的所有文件。但是,当我尝试使用以下代码向文件添加文本时,出现错误:

代码:

$textIsAddedAfter = "<head>"
$textToAdd = "    <sometag>"

ForEach ($file in $files) {
(Get-Content $file) |
Foreach-Object {
    $_
    if($_ -match $textIsAddedAfter) {
        $textToAdd
    }
} | 
Set-Content $file
}

错误:

Get-Content : cannot find path 'C:\users\apgdy\test.aspx' because it does not exist.
At line:2 char:17
+     <Get-Content <<<<  $file> |
     + CategoryInfo         : ObjectNotFound: <C:\Users\apgdy\test2.aspx:String
    > [Get-Content], ItemNotFoundException
     + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetCo
ntentCommand

我在$files中找到的每个文件中都有一个 奇怪的是,在代码中,我告诉控制台,文件存在于"C:\users\apgdy\Downloads\test_proj"及其子项中,而不是"C:\users\apgdy"。为什么它从我告诉它寻找文件的目录中省略"\Downloads\test_proj"

提前致谢!

0 个答案:

没有答案