gpt4 book ai didi

powershell - 如何使用 Powershell 将 Set-Content 写入文件?

转载 作者:行者123 更新时间:2023-12-02 22:35:18 24 4
gpt4 key购买 nike

我在 PowerShell 脚本中进行了许多字符串替换。

foreach ($file in $foo) {
$outfile = $outputpath + $file
$content = Get-Content ($file.Fullname) -replace 'foo','bar'
Set-Content -path $outfile -Force -Value $content
}

我已经验证(通过 $outfile$content 的控制台日志记录,我没有在上面的代码中显示)正在选择正确的文件, -replace正在准确更新内容, $outfile s 正在创建中。但是,每个输出文件都是一个 0 字节的文件。 Set-Content行似乎没有将数据写入文件。我试过管道 Set-ContentOut-File ,但这只会给我一个错误。

当我更换 Set-ContentOut-File , 我收到运行时错误 Out-File : A parameter cannot be found that matches parameter name 'path'.即使我可以输出 $outfile到控制台,看看它是一个有效的路径。

是否有额外的步骤(如关闭文件或保存文件命令)我需要采取或不同的顺序,我需要通过管道来获取 $content写信给我 $outfile ?我缺少什么组件?

最佳答案

Out-File cmdlet 没有 -Path参数,但是它确实有 -FilePath范围。以下是如何使用它的示例:

Out-File -FilePath test.txt -InputObject 'Hello' -Encoding ascii -Append;

您还需要包装 Get-Content括号中的命令,因为它没有名为 -replace 的参数.
(Get-Content -Path $file.Fullname) -replace 'foo','bar';

我还建议添加 -Raw Get-Content 的参数,以便确保您只处理单行文本,而不是字符串数组(文本文件中每行一个 [String])。
(Get-Content -Path $file.Fullname -Raw) -replace 'foo','bar';

没有足够的信息来完全了解发生了什么,但这里有一个完整的示例,说明我认为您正在尝试做的事情:
# Create some dummy content (source files)
mkdir $env:SystemDrive\test;
1..5 | % { Set-Content -Path $env:SystemDrive\test\test0$_.txt -Value 'foo'; };

# Create the output directory
$OutputPath = mkdir $env:SystemDrive\test02;

# Get a list of the source files
$FileList = Get-ChildItem -Path $env:SystemDrive\test -Filter *.txt;

# For each file, get the content, replace the content, and
# write to new output location
foreach ($File in $FileList) {
$OutputFile = '{0}\{1}' -f $OutputPath.FullName, $File.Name;
$Content = (Get-Content -Path $File.FullName -Raw) -replace 'foo', 'bar';
Set-Content -Path $OutputFile -Value $Content;
}

关于powershell - 如何使用 Powershell 将 Set-Content 写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com