0

処理のために別の場所に再帰的にコピーしたいディレクトリがあります。最初のディレクトリが作成されていないようです。コピーを行うプログラムの部分は次のとおりです。

# Read the source files to convert.
$lAllFiles = Get-ChildItem $lSrc -Exclude $lExcludedFiles

# Remove excluded directories
foreach ( $lExclusion in $lAllExcludedDirectories ) {

    # If we have a wildcard use the -notlike operator to filter the list.
    # Otherwise use an -ne operator.
    if ( ($lExclusion -like '*' ) -or ($lExclusion -like '?' ) ) {
        $lAllFiles = [array]$lAllFiles -notlike $lExclusion
    } else {
        $lAllFiles = [array]$lAllFiles -ne $lExclusion
    }
}

# Start the log.
Start-Transcript -Path "$lJobLog"

# Copy the data to be converted to the conversion root.
ForEach ( $lFile in $lAllFiles ) {
    Copy-Item $lFile  $lCnv -Recurse -Force -ErrorAction SilentlyContinue -ErrorVariable +JobErrors -Verbose
}

.
.
.

ソース ディレクトリと宛先ディレクトリを比較すると、宛先に最初のサブディレクトリが作成されておらず、最初のサブディレクトリの内容が宛先に書き込まれているように見えます。

例として:

The Source:
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----          1/6/2013   9:30 AM            AP-LEDGER
d----         3/12/2014   9:28 AM            AP.DETAIL
d----         8/20/2014   9:33 PM            AR-LEDGER
d----          9/3/2011   9:58 AM            lost+found
-a---         5/13/2016   9:21 PM      32768 AP-BATCH-CTRL
-a---         5/13/2016   8:39 PM  291293184 AP-LEDGER-XREF
-a---         9/28/2015   3:14 PM    8425472 AP.JDE
-a---         5/13/2016   8:39 PM  150700032 AP.LINK
-a---          5/2/2016   3:30 PM      52224 AP.QUEUES
-a---         5/13/2016   8:17 PM  743018496 AP.SUSP
-a---         4/30/2016   9:11 PM   51222528 ARROLLARC
-a---         4/30/2016   9:11 PM  102404096 ARROLLFWD
-a---         5/14/2016   3:29 AM 1016950784 A_Pa
-a---         5/14/2016  12:37 AM  238280704 A_Ra
-a---         5/14/2016   3:16 AM   61423616 GL-CROSS
-a---         5/14/2016   3:16 AM  175235072 GL-INDEX
-a---         5/14/2016   3:16 AM   21512192 G_La
-a---         5/14/2016   3:16 AM  224661504 X_AP.SUSP
-a---         5/14/2016   3:29 AM  150089728 X_A_Pa
-a---         5/14/2016  12:37 AM   63578112 X_A_Ra

目的地:

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         5/26/2016  10:53 PM            AP.DETAIL
d----         5/26/2016  10:53 PM            AR-LEDGER
-a---         5/13/2016   8:38 PM 1073737728 dat001
-a---         5/13/2016   8:39 PM  682541056 dat002
-a---         5/13/2016   8:39 PM 1004023808 idx001
-a---         5/13/2016   8:37 PM   41234432 over001

ディレクトリ内のファイルは、フォルダ AP-LEDGER に存在する必要があることに注意してください。何が起こっている?

-Recurse -Force はディレクトリを作成しませんか?

4

1 に答える 1

0

を確認してください。Copy-Itemこの関数のようなものを使用して、ファイル/ディレクトリをある場所から次の場所に除外してコピーしました。

Function Copy-Folder($Path,$DestinationPath,$Exclude = $exclude) {
    # Get all the files to copy
    $files = Get-ChildItem -Path $Path -Exclude $Exclude 
    # Copy files to destination folder. 
    foreach($file in $files) {      
        Copy-Item $file.FullName $DestinationPath -Recurse -Force
        $filename = $file.Name
        $copy = "$DestinationPath\$filename"
        Write-Host "Copied: $filename to $copy"
    }
}

除外されたサブディレクトリを削除するためのロジックも確認する必要があります

于 2016-05-27T09:06:05.430 に答える