2016-08-26 4 views
0

robocopyを使用して1つのシステムからサーバに、そして特定のパスにファイルをコピーするビルドシステムがあります。新しい要件が導入されましたまで、次はうまく働いていますあるサーバから別のサーバにregexにマッチしたフォルダを使用してrobocopyを実行する方法

robocopy local\dist \\server01\somepath\dist XF *.* /E 

は今、私たちは情報を構築含めるように変更する「distの」名前を持っていると思います。たとえば、 'dist1'、 'dist2'、 'distabcd'などです。とにかく、ポイントは、フォルダ名が変化しているということです。私はそれを想定し、PowerShellはこれを実行するためにコマンドを使用するオプションが用意されてい

robocopy local\dist* \\server01\somepath\[????] XF *.* /E 

リモートサーバー上でどのように「distの」で始まる任意の名前に一致するRobocopyをを教えてくれますが、正しい完全な名前のdistのフォルダにコピーしますサーバーの場所にコピーできる可能性があります。私はPowerShellについてほとんど何も知らないが、何かヒントを歓迎する。

+0

ワイルドカードは、ディレクトリではなくファイル名でのみ使用できます。 – revo

答えて

1

Powershellは、 '-match'演算子と '-contains'演算子でRegEx機能を提供します。ここでは、ディレクトリの変更をキャプチャする例を示します。

$localDirectory = "local\dist" 
$directory = "\\server01\somepath\dist"  
$keyword = "dist" 
$fileDirectory = Get-ChildItem -Path $directory -Recurse 

foreach ($container in $fileDirectory) 
{ 
    # -match is one of the RegEx functions we may utilize for this operation 
    # e.g dist1.. dist2.. distabc.. adist.. mynewdistrubition 
    if ($container -match $keyword) 
    { 
     try 
     {        
      Copy-Item -Path "$($directory)\$($container)" -Destination $localDirectory -Force -Recurse 
     } 
     catch [System.Exception] 
     { 
      Write-Output $_.Exception 
     } 
    } 
} 
関連する問題