プロさんのおうち   ~プログラムのサンプル置き場~


ファイルコピー


フォルダ配下に対して検索パターンを指定し、パターンに一致するファイルをコピーしてみます。

コマンド実行用ソース

まず、ps1ファイルに記述せず、1行で処理するパターンを記載します。

今回はフォルダの検索オプションとして、配下全てを対象としています。


[System.IO.Directory]::GetFiles("検索対象フォルダ", "検索パターン", [System.IO.SearchOption]::AllDirectories) | %{ [System.IO.File]::Copy($_, [System.IO.Path]::Combine("コピー先フォルダ", [System.IO.Path]::GetFileName($_))) }
				

単純な処理は上述のように1行で記載できますが、分岐等を入れたい場合、どうしても1行では書きづらくなりますね。。。

Powershellファイルに記載用ソース

分岐等も入れやすいように、ps1ファイルに記載する場合は以下のようになるかと思います。


# コピー対象となるファイルを検索する。
$srcFiles = [System.IO.Directory]::GetFiles("検索対象フォルダ", "検索パターン", [System.IO.SearchOption]::AllDirectories);

foreach ($srcFile in $srcFiles) {
    # 分岐等、お好みの処理を組み込む。
    
    # ファイルをコピーする。
    [System.IO.File]::Copy($srcFile, [System.IO.Path]::Combine("コピー先フォルダ", [System.IO.Path]::GetFileName($srcFile)));
}
				

コマンド実行用のように1行で記載するより、こちらの方が見やすくて個人的には好みです。

ただ、Powershellはファイル実行するためには権限設定をデフォルトから変更しないといけないので、1行でコマンド実行するほうが使う機会があるかも?しれないですね。


メニューに戻る


CopyRight 2019 株式会社PUreatio