PowerShellのCopy-Itemで除外リストが機能しないようです。
2023-09-25 09:49:06
質問
以下のPowerShellスクリプトのスニペットがあります。
$source = 'd:\t1\*'
$dest = 'd:\t2'
$exclude = @('*.pdb','*.config')
Copy-Item $source $dest -Recurse -Force -Exclude $exclude
これは t1 から t2 へすべてのファイルとフォルダをコピーするために動作しますが、"root"/"first-level" フォルダ内の除外リストのみを除外し、サブフォルダは除外しません。
どうすれば、すべてのフォルダーで除外リストを除外できるようになりますか?
どのように解決するのですか?
Get-ChildItemを使用して、Copy-Itemコマンドをパイプで接続するのが一番良い方法だと思います。
私はこれがうまくいくことを発見しました。
$source = 'd:\t1'
$dest = 'd:\t2'
$exclude = @('*.pdb','*.config')
Get-ChildItem $source -Recurse -Exclude $exclude | Copy-Item -Destination {Join-Path $dest $_.FullName.Substring($source.length)}
基本的に、ここで起こっていることは、有効なファイルを一つずつ調べて、新しいパスにコピーしていることです。最後の'Join-Path'ステートメントは、ファイルをコピーするときにディレクトリも保持するようにするためです。この部分は、コピー先のディレクトリを受け取り、ソースパスの後のディレクトリと結合します。
私はこのアイデアを ここで からアイデアを得て、この例で動作するように少し修正しました。
うまくいくといいんだけどなー。
関連
-
[解決済み] スクリプト内の特定の場所にジャンプする
-
[解決済み] Connect-VIServer は、渡された資格情報では動作しないが、統合された認証では動作する。
-
[解決済み] Add-ADGroupMember が ID を持つオブジェクトを見つけられません。
-
[解決済み] ヌル値の式でメソッドを呼び出すことはできない
-
[解決済み] PowerShellでディレクトリを変更する
-
[解決済み] 配列、ハッシュテーブル、ディクショナリーを作成しますか?
-
[解決済み] PowerShellを使用してSFTPにファイルをアップロードする
-
[解決済み] 実行中のPowerShellスクリプトからすべての環境変数を表示する
-
[解決済み] PowershellでTimeZoneを設定する方法
-
[解決済み] PowerShellの画面を各コマンドの前に自動的にクリアする方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】powershellにターミネーターがない。"
-
[解決済み】'<'演算子は将来の使用のために予約されている
-
[解決済み] powershellでパラメータ'Path'がNULLのため引数を結合できないエラーの取得
-
[解決済み] Invoke-Sqlcmd エラー : リモート DB サーバを呼び出すために powershell を実行すると、ユーザ xxxx のログインに失敗しました。
-
[解決済み] Get-ADUser -Identity
-
[解決済み] PowerShellの文字列補間構文
-
[解決済み] PowerShellで遠隔地からファイルをコピーする
-
[解決済み] powershellスクリプトで、最後に改行を入れずにWrite-Warningすることはできますか?
-
[解決済み] Join-Pathを使って、2つ以上の文字列をファイルパスに結合するにはどうすればよいですか?
-
[解決済み] コピーアイテムはデフォルトで上書きをする