Powershell - 文件名中的变量时不支持路径格式

时间:2015-08-06 14:58:46

标签: xml powershell

我试图将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")

和其他格式但仍然会出现相同的错误。

2 个答案:

答案 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)
}