PowerShell - 使用 -Recurse 和 -Filter 附加到目录中的所有文件
PowerShell - Using -Recurse and -Filter to append to all files in a directory
我正在尝试查找目录及其所有 child 文件夹中的所有 .aspx
文件,以便我可以在 <head>
标签下添加标签。 Parent 个目录可能包含 .aspx
个文件以及 child 个文件夹。
换句话说,我希望 select 该目录中的所有 .aspx
文件以及其 child 文件夹中的所有 .aspx
文件,所有 .aspx
文件在那些 children 等的 children 中。我正在使用以下 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"
及其 children 中,而不是 "C:\users\apgdy"
中。为什么它从我告诉它查找文件的目录中省略了 "\Downloads\test_proj"
?
提前致谢!
当您调用 Get-Content
时,它没有使用完整的文件路径。更改自:
Get-Content $file
收件人:
Get-Content $file.FullName
或者:
$file | Get-Content
我正在尝试查找目录及其所有 child 文件夹中的所有 .aspx
文件,以便我可以在 <head>
标签下添加标签。 Parent 个目录可能包含 .aspx
个文件以及 child 个文件夹。
换句话说,我希望 select 该目录中的所有 .aspx
文件以及其 child 文件夹中的所有 .aspx
文件,所有 .aspx
文件在那些 children 等的 children 中。我正在使用以下 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"
及其 children 中,而不是 "C:\users\apgdy"
中。为什么它从我告诉它查找文件的目录中省略了 "\Downloads\test_proj"
?
提前致谢!
当您调用 Get-Content
时,它没有使用完整的文件路径。更改自:
Get-Content $file
收件人:
Get-Content $file.FullName
或者:
$file | Get-Content