ちょっと私はPowerShellをかなり使い慣れていて、ムービー転送スクリプトを作成しようとしています。私はムービーフォルダの子アイテムをリストし、それらを.csvにダンプするスクリプトを作成しました。エンドユーザーは.csv内のファイルを選択し、別の列に「y」を配置することができます。次に、Powershellスクリプトを実行して、「y」列を使用して選択内容をフィルタリングし、項目を比較して別のフォルダ/ドライブにコピーします。Powershellはcsvのリストを使ってディレクトリをコピーします
ムービーが保存されている元のフォルダと.csvを比較し、別のフォルダにコピーするときに問題があります。私のスクリプトは、[0]などを使用して、一度に1つの配列項目を見つけてコピーします。
私のexport-csvスクリプト(問題なく動作します)とコピー項目スクリプト)
EXPORT-CSV.ps1
$Movies = "D:\Media\Movies"
Get-ChildItem $Movies | select name,y | Export-Csv D:\Media\Media_Scripts\Movies.csv -NoTypeInformation
と出力の画像は、.csvファイル
COPY-ITEM.ps1 $ csv_nameの後に[]内に単一の配列番号を追加した場合にのみ動作します。私はあなたが配列を取得しているし、コピーする名前を解決できないようだと思う新しい場所
$Csv_loc = "D:\Media\Media_Scripts\"
$Movies_loc = "D:\Media\Movies\"
$Test = "D:\Media\Media_Scripts\Test\"
$csv = Import-Csv "$csv_loc\Movies.csv" | Where-Object{$_.y -eq "y"} | select name
$csv_name | foreach($_)
{
Get-ChildItem $movies_loc | Where-Object {$_.Name -contains $csv_name[0]} | copy-item -Destination $Test -Recurse -Verbose
}
'$ csv_name'は空です。あなたはそれに何も割り当てません。また、二重バックスラッシュでパスを作成します。 'Join-Path'を使うことで、間違いを避けることができます。そしてあなたはforeachを間違って使う。 – Swonkie
ありがとうございました。申し訳ありませんが、変数を間違って書きました(ちょうど$ csvであることを意味していました) –
Swonkieが指摘した訂正を反映するために質問を編集する必要があります。またあなたのforeach($ _)は私には非常に不明です。あなたは、しばしばパーセント記号で書かれた構成を試していますか? –