2

以下は、私のpowershellスクリプトの正確なシナリオです。

$Source = "C:\MyTestWebsite\"
$Destination = "C:\inetpub\wwwroot\DemoSite"
$ExcludeItems = @(".config", ".csproj")

Copy-Item "$Source\*" -Destination "$Destination" -Exclude $ExcludeItems -Recurse -Force

宛先フォルダーに存在しない場合、このコードで .config および .csproj ファイルをコピーする必要があります。現在のスクリプトは、それらが存在するかどうかに関係なく、それらを単に除外します。目的は、スクリプトで .config ファイルと .csproj ファイルを上書きしないようにすることですが、宛先に存在しない場合はコピーする必要があります。

スクリプトでどのような修正が必要かについて何か考えはありますか?

これに関するヘルプは大歓迎です。

ありがとう

4

4 に答える 4

2
$Source = "C:\MyTestWebsite"
$Destination = "C:\inetpub\wwwroot\DemoSite"

$sourceFileList = Get-ChildItem "C:\inetpub\wwwroot\DemoSite" -Recurse

foreach ($item in $sourceFileList)
{
    $destinationPath = $item.Path.Replace($Source,$Destination)
    #For every *.csproj and *.config files, check whether the file exists in destination
    if ($item.extension -eq ".csproj" -or $item.extension -eq ".config")
    {
        if ((Test-Path $destinationPath) -ne $true)
        {
            Copy-Item $item -Destination $destinationPath -Force
        }
    }
    #If not *.csproj or *.config file then copy it directly
    else
    {
        Copy-Item $item -Destination $destinationPath -Force
    }
}
于 2014-11-18T10:31:35.877 に答える
0

SKaDTのソリューションは私にとってはうまくいきました。

Copy-Item -Path (Get-ChildItem -Path E:\source\*.iso).FullName -Destination E:\destination -Exclude (Get-ChildItem -Path E:\destination\*.iso).Name -Verbose

(Get-ChildItem -Path E:\source\*.iso).FullNameは、完全なドライブ、パス、およびファイル名を含むすべてのソース ファイルを収集します。-Excludeパラメーターを指定する(Get-ChildItem -Path E:\destination\*.iso).Nameと、宛先フォルダー内のすべての *.iso ファイルを収集し、それらすべてを除外します。結果: すべての *.iso ファイルをソースから宛先にコピーしますが、宛先フォルダーに存在するすべての *.iso ファイルを除外します。

于 2021-01-28T15:09:16.870 に答える