これが私の状況です。260 文字以上を含むパスにある XML があります。このパスのフォルダーの 1 つは常にランダムで、別のフォルダーはバージョンに基づいているため、異なる場合もあります。
XML をロードし、変更を加えて保存しようとしています。これまでのところ、その場でそれを行うことができなかったので、それを C:\Windows\Temp にコピーし、そこで変更を加えてから、手動テストで機能した場所にコピーしようとしています。
私の主な問題は、ファイルパスに260以上の文字が含まれているため、Copy-Itemが正しく機能せず、パスに変数を使用する必要があるため、Robocopyを機能させる方法を理解できなかったことです.ランダムなフォルダ。
XML の変更が機能し、Temp へのコピーが機能します。私が抱えている問題は、それを 260 文字以上のパスにコピーすることです。
参考までに、私はPowershellを初めて使用します。これが私がこれまでに思いついたものです:
$folderLocation = Get-ChildItem -Path C:\Windows\System32\config\systemprofile\AppData\Local\ProgramA\ -Filter userConfig.xml -Recurse |
Sort-Object LastWriteTime |
Select-Object -last 1 |
Select-Object Directory |
Format-Table -hide
foreach ($f in $folderLocation){
Copy-Item userConfig.xml C:\Windows\Temp
}
$myXML = New-Object System.Xml.XmlDocument
$myXML.Load("C:\Windows\Temp\userConfig.xml")
$isActive = $myXML.SelectSingleNode("//setting[@name = 'Active']")
$isActive.value = "True"
$myXML.Save("C:\Windows\Temp\userConfig.xml")
$convertFolder = [System.String]$folderLocation
Copy-Item ("C:\Windows\Temp\userConfig.xml") $convertFolder
これが私が試した Robocopy コードです。ハックジョブであることはわかっていますが、オンラインで見たものをいくつか模倣しようとしました。
function copy-stuff
{
param([string]$source = "C:\Windows\Temp",
[string]$destination = $convertFolder,
[string]$options = “/R:0″,”/W:0″,”/COPY:DAT”)
[string]$file = "userConfig.xml"
robocopy $source $destination $file $options
}
私は robocopy でいくつかの異なることを試しましたが、これは私がまだ保存していたものです。私はPowershellで関数を作成して使用することについて勉強していないので、これは猿の試みでした。