0

ある場所から別の場所にファイルをコピーしようとしています。ディレクトリ、名前、および移動には重要ではないその他のフィールドを含む CSV があります。私のコードは、ファイルだけでなくフォルダー構造全体を移動しようとしていると確信しています。どうすればファイルを移動できますか? または、同様のフォルダ構造を新しい場所 (\folder\username) に移動するにはどうすればよいですか

ディレクトリは次のようになります。

\\server\folder\username

私が試していたコード:

Import-Csv c:\movefiles.csv | ForEach-Object {Copy-Item -LiteralPath ($_.Directory + "\" + $_.name) -Destination c:\}

宛先は、実際には別のサーバー上の場所になります。

4

1 に答える 1

0

nameあなたがしようとしているコードは、ファイルをコピーし(プロパティがファイルの名前である限り)、必要に応じて保存する必要がありc:\ます。Join-Path現在のアプローチではなく、ディレクトリとファイル名を組み合わせて使用​​することをお勧めします。複数などを持っていないことを確認します\。例:

ForEach-Object {Copy-Item -LiteralPath (Join-Path $_.Directory $_.name) -Destination c:\}

フォルダ構造でコピー(未テスト):

function MoveTo-NewServer {
    param(
    [Parameter(Mandatory=$true)]
    $Csvpath,
    [Parameter(Mandatory=$true)]
    $Newserver)

    if(Test-Path $Csvpath -PathType Leaf) {
        Import-Csv $Csvpath | ForEach-Object {
            $h = ([uri]$_.directory).Host
            $src = Join-Path $_.Directory $_.name
            $dest = $src.Replace($h, $Newserver)
            if(!(Test-Path $dest)) { New-Item $dest -ItemType File -Force }
            Copy-Item -LiteralPath $src -Destination $dest -Force
        }
    }
}

前述のとおり、これはテストされていません。次のように使用してみてください。

MoveTo-NewServer -Csvpath "c:\mycsv.csv" -Newserver "server2"
于 2013-01-30T20:55:24.993 に答える