我试图将XML声明添加到目录中的多个文件中。该代码适用于具有硬编码名称的单个文件,但是当我想为多个文件运行它时,我收到以下错误:
"异常呼叫"保存"用" 1"参数:"给定的路径' s 格式不受支持。"
我正在使用:
$FilePath = C:\test
$files = Get-ChildItem $FilePath\*.xml
foreach ($file in $files)
{
$xml = [xml](get-content $file)
$decl = $xml.CreateXmlDeclaration("1.0", "ucs-2", "yes")
$xml.InsertBefore($decl, $xml.DocumentElement)
$xml.save($FilePath$file)
}
我一直在将最后一行改为
$xml.save($FilePath+"\"+$file)
$xml.save("$FilePath\$file")
和其他格式但仍然会出现相同的错误。
答案 0 :(得分:1)
$ xml.save(“$ file”)?
$FilePath = "C:\test"
$files = Get-ChildItem $FilePath\*.xml
foreach ($file in $files)
{
$xml = [xml](get-content $file)
$decl = $xml.CreateXmlDeclaration("1.0", "ucs-2", "yes")
$xml.InsertBefore($decl, $xml.DocumentElement)
$xml.save($file)
}
或
$FilePath = "C:\Scripts"
$files = Get-ChildItem $FilePath\*.xml
foreach ($file in $files)
{
$xml = [xml](get-content $file)
$decl = $xml.CreateXmlDeclaration("1.0", "ucs-2", "yes")
$xml.InsertBefore($decl, $xml.DocumentElement)
$xml.save($FilePath + $file.Name)
}
当$ file已满:\ path \ of \ file \ plus \ filename.xml您试图添加full:\ path to it。
$ file或$ Filepath + $ File.Name将起作用。
答案 1 :(得分:0)
我遇到了类似的问题,并且可以通过使用 -join 命令创建新的变量来连接字符串来获得所需的内容。在这种情况下,我们将其称为 $ XMLCompatibleFileNames 。
$FilePath = C:\test
$files = Get-ChildItem $FilePath\*.xml
foreach ($file in $files)
{
$xml = [xml](get-content $file)
$decl = $xml.CreateXmlDeclaration("1.0", "ucs-2", "yes")
$xml.InsertBefore($decl, $xml.DocumentElement)
# Join your vars as strings and add the wack (\) if not included in the directory var
# Test it with write-host $XMLCompatibleFileName
$XMLCompatibleFileName = -join ("$($FilePath)\","$($File)")
$xml.save($XMLCompatibleFileName)
}