【PowerShell】copy-item|フォルダ•ファイルをコピーする
作成日:2025-05-15
更新日:2025-10-07

クリックせずに
コピーする
コピーする

たとえば
こんなとき
- フォルダごとデスクトップにコピーしたい
- 元のデータを壊したくない
- ネットワークフォルダからデスクトップに移動したい
copy-item $src -destination $dst -recurse

パスは分割する
# パス準備
$src1 = "folder_path1"
$src2 = "folder_path2"
$src3 = "folder_path3"
$src = Join-Path -Path $src1 -ChildPath $src2
$src = Join-Path -Path $src -ChildPath $src3
$dst = [System.Environment]::GetFolderPath('Desktop')
$isFolder = test-path $src -pathtype container
copy-item $src -destination $dst -recurse:$isFolder
# 開く
if ($isFolder) {
start-process explorer.exe "$dst\$src3" # フォルダの場合
} else {
start-process "$dst\$src3" # フォルダ以外(ファイル)の場合
}

パスは段階的につなぐ
-destination(目的地)
目的地はここだよ
$src -destination $dst
- $src の目的地は $dst だよ
-recurse
中身丸ごと、まとめて持っていってね
copy-item $src -destination $dst -recurse
- $src の目的地は $dst だよ
- そして、中身も丸ごと持っていってね
\project
├─ data\
│ └─ log.txt
└─ aaa.xlsx
↓ コピーした先:
\desktop\project
├─ data\
│ └─ log.txt
└─ aaa.xlsx
recurse なしの場合:空フォルダとしてコピー
copy-item $src -destination $dst
- $src の目的地は $dst だよ
- フォルダだけ(中身なしで)持っていって
\project
├─ data\
│ └─ log.txt
└─ aaa.xlsx
↓ コピーした先:
\desktop\project
(中身なし)
test-path $src -pathtype container
$src の最後の要素を調べる|-pathtype container

test-pathで
パスをテストする
-pathtype container|フォルダか?
- ファイルか?の場合は -pathtype leaf
-recurse:$isFolder
:変数名|ON・OFF を動的に切り替えられる

フォルダのときだけ
recurseする
$isFolder$isFolderがTrue-Recurse:$true→ 再帰してコピー
$isFolderがFalse-Recurse:$false→ 再帰なしでコピー(中身なし)
start-process で開く
start-process
- 最初のパスは同じで、最後のフォルダ名だけ変えるのに便利
- 最後に開く場合、ピンポイントで指定できる
必要なコマンドを
テキストファイルで保管
テキストファイルで保管
2025-05-15
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-

[PowerShell]compare two filesCompare-Object 1 2 【PowerShell】Compare-Object|2つのファイルの差分を出す -

cd¥.. 【PowerShell】cd|場所の移動 -

[PowerShell]copyto desktop 【PowerShell】指定のフォルダをデスクトップへコピーする -

mimove-item(rename) 【PowerShell】move-item|リネーム -

quickaccesstool bar 【PowerShell】フォルダからクイックアクセスする -

select -expand name 【PowerShell】gci -file|ファイル名の一覧