1

一般来说,我对 PowerShell 和脚本编写非常陌生,但我需要制作一个脚本来搜索目录,找到具有特定扩展名的所有文件(不包括某些目录中的文件),然后使用文本字符串编辑每个文件。

目前,我可以使用以下命令生成我想要的位置中所有文件的列表,不包括我想忽略的目录:

Get-ChildItem -path C:\path\location\TEST\* -recurse -Exclude ROB | Where-Object { -not $_.PSIsContainer} | where {$_ -notmatch 'ROB'} | ?{$_.name -match “^*.cpp|h$”}

现在我正在努力的是使用add-contentcmdlet 将字符串添加到与我上面的查询匹配的每个文件的底部。我已尝试执行以下操作,但它不起作用:

Add-Content {Get-ChildItem -path C:\path\location\TEST\* -recurse -Exclude ROB | Where-Object { -not $_.PSIsContainer} | where {$_ -notmatch 'ROB'} | ?{$_.name -match “^*.cpp|h$”}} "TextString"

这是我得到的错误:

    + CategoryInfo : MetadataError: (:) [Add-Content], ParameterBindingException
    + FullyQualifiedErrorId : ScriptBlockArgumentNoInput,Microsoft.PowerShell.Commands.AddContentCommand

任何帮助,将不胜感激。

4

1 回答 1

0

似乎这里的答案是将get-childitem命令定义为变量,然后将变量定义为add-content中提琴的位置!

所以它看起来像

$Query = Get-ChildItem -path C:\path\location\TEST\* -recurse -Exclude ROB | Where-Object { -not $_.PSIsContainer} | where {$_ -notmatch 'ROB'} | ?{$_.name -match “^*.cpp|h$”}
add-content -path $Query "Text"
于 2012-09-05T16:15:53.977 回答