1

特定の名前を持つディレクトリ内の任意のサブフォルダーに 1 つのファイルをコピーしようとしています。私はそこまでの道のりの途中ですが、うまく機能させることができません。

次を使用して、「ヘルプ」と呼ばれるすべてのサブフォルダーを見つけることができます。

Get-ChildItem -Path Y:\folder1\subfolder -Directory -Recurse | ? { ($_.PSIsContainer -eq $true) -and ($_.Name -like 'help')}

これにより、help とい​​う名前の Y:\folder1\subfolder 内の任意のフォルダーが取得されます。だから試してきました:

$folder = Get-ChildItem -Path Y:Y:\folder1\subfolder -Directory -Recurse | ? { ($_.PSIsContainer -eq $true) -and ($_.Name -like 'help')}

foreach ($f in $folder){
Copy-Item Y:\Info.html -Destination $folder[$f]
}

そしてそれはうまくいきません。ファイルのコピー先のすべてのディレクトリをcsvファイルに書き出す方法も教えていただければ、ボーナスポイントです。

ありがとう

4

2 に答える 2

1

これはバージョン 3 で書きましたが、1 と 2 はテストしたので、おそらく 1 と 2 で動作すると思いSet-StrictMode -Version <number>ます。

CSV 出力は、すべての行で次のようになります。Y:\Info.html,Y:\folder1\subfolder\help

$logpath = 'C:\log.csv'
$logopts = @{filepath=$logpath; append=$true; encoding='ascii'}

$file = 'Y:\Info.html'
$path = 'Y:\folder1\subfolder'
$search = 'help'

gci $path -d -s `
  | ?{ $_.psIsContainer -and $_.name -match $search } `
  | %{
    cp $file $_.fullName;                 # copy file
    $line = $file, $_.fullName -join ','; # build output
    $line | out-file @logopts;            # write output
  }
于 2014-02-04T01:17:43.153 に答える
1

バージョン 1

$folders = @(
    (gci Y:\folder1\subfolder -dir -r | ? {$_.Name -like 'help'}).fullname
)

ForEach ($f in $folders) {
    Copy-Item Y:\Info.html $f
}

バージョン 2

(gci Y:\folder1\subfolder -dir -r | ? {$_.Name -like 'help'}).fullname | % {cp Y:\Info.html $_}
于 2014-02-03T22:07:05.383 に答える