PowerShell:不同内容对应不同文件保存时内容重复的问题修复求助
问题分析与修复
你的代码出现所有文件内容相同的原因有两个核心问题:
- 函数内部错误遍历所有路径:每次调用
MyFunction时,函数里的foreach ($SavePath in $savePaths)会把当前传入的$Text写入所有文件路径,最后一次调用函数的文本会覆盖之前所有文件的内容。 - 外层循环未正确关联文本与路径:原外层
foreach ($text in $texts)中,$savePath变量未被正确赋值,无法将每个文本对应到指定路径。
修复后的代码
$texts = ( "Text1", "Text2", "Text3" ) $savePaths = ( "c:\foo\myfile1", "c:\foo\myfile2", "c:\foo\myfile3" ) function Write-TextToXml { param ( [string]$Text, [string]$SavePath ) $xml = [XDocument]::new( [XElement]::new("Item", [XAttribute]::new("version", "1"), [XElement]::new("text", $Text) ) ) $outputPath = "$($SavePath.ToLower()).xml" $xml.ToString() | Out-File -Path $outputPath } # 通过索引遍历,确保文本与路径一一对应 for ($i = 0; $i -lt $texts.Count; $i++) { Write-TextToXml -Text $texts[$i] -SavePath $savePaths[$i] }
关键修复点
- 移除函数内遍历所有路径的逻辑,让函数只负责单个文本到单个路径的写入操作。
- 改用
for循环通过索引关联$texts和$savePaths,保证每个文本都能写入到对应的目标文件中。 - 修正原外层循环中
$savePath未正确赋值的问题,确保参数传递准确。
内容的提问来源于stack exchange,提问作者user19418817
相关产品推荐
相关产品推荐

