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

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

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

パスを分割するのは
最後に開くため
# パス準備
$src1 = "folder_path1"
$src2 = "folder_path2"
$src3 = "folder_path3"
$src = "$src1¥$src2¥$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" # フォルダ以外(ファイル)の場合
}

テキストファイルに保存し
一気にコピペ
Enterは一回だけでOK
パスを分割するメリット
- 最初のパスは同じで、最後のフォルダ名だけ変えるのに便利
- 最後に開く場合、ピンポイントで指定できる
-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
編集後記:
この記事の内容がベストではないかもしれません。