2017-07-12 14 views
0

要件に応じて、特定の子フォルダ内のファイルを検索し、目的のパスにコピーします。以前はC#.NETで実装していましたが、今はPowerShellで変換したいと思っています。ここでpowershell内の特定の子フォルダ内の検索ファイル

foreach (var directory in Directory.EnumerateDirectories(sourcePath, specificChildFolder, SearchOption.AllDirectories)) 
{ 
      var pathSrc = Path.Combine(directory, "xyz.config"); 
      if (File.Exists(pathSrc)) 
      { 
       File.Copy(pathSrc, pathDst, true); 
       break; 
      } 
} 
+0

さらに、c#コードを.ps1スクリプトに埋め込むこともできます – Petaflop

答えて

1

は、使用できるコードです:

$path = "C:\Users\user1\Desktop\Config Rework\" 
$destination = "c:\destination\" 
foreach ($filepath in [System.IO.Directory]::EnumerateFiles($path,"xyz.config","AllDirectories")) 
    { 
     $file = New-Object System.IO.FileInfo($filepath) 

     if(Test-Path $file) 
     { 
     write-host $file.FullName 
     copy $file $destination 
     Write-Host 'Copied' $file ' to ' $destination 
     } 
    } 

出力:

C:\Users\user1\Desktop\Config Rework\xyz\xyz.config 
Copied C:\Users\user1\Desktop\Config Rework\xyz\xyz.config to c:\destination\ 

これはCの下に子フォルダをループしています:\ Users \ユーザーuser1の\デスクトップ\ Configをリワークxyz.configが存在するかどうかを確認し、それをコピー先フォルダにコピーします。次のようにディレクトリが見える場合という

注:

enter image description here

XYZフォルダの下のxyz.configは、子フォルダをループそれが意志として優先されます。

関連する問題