0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Power shell を使おうぜ☆(^~^)<その3> Copy-Itemを使うときのパスを倒そうぜ☆(^~^)

Last updated at Posted at 2019-02-26
+ C:
  + Box
    + Pen.txt
    + Eraser.html

とあるとき、

+ C:
  + PenCase
    + Pen.txt
    + Eraser.html

と別のディレクトリーに丸ごとコピーしたいときがあるだろ。試した結果から言ってしまうと、ここでやることは

copy.ps1
# コピー先ディレクトリの存在確認。
if (Test-Path "C:\PenCase") {
    # あれば中身を全部消す。
    Remove-Item "C:\PenCase\*" -Recurse
} else {
    # なければ作る。
    New-Item -ItemType Directory -Path "C:\PenCase"
}

# コピー元の中身をすべて指定し、コピー先はディレクトリを指定する。(ややこし……)
Copy-Item "C:\Box\*" "C:\PenCase"

ディレクトリーなんてものは 看板で書かれた住所みたいなもので存在せず、あくまで ファイルをコピーする、
という物の見方をすればいいらしい。

変数を使ってみよう。

copy.ps1
# Trailing NOT slash.
$origin = "C:\Box"
$clone = "C:\PenCase"

# コピー先ディレクトリの存在確認。
if (Test-Path $clone) {
    # あれば中身を全部消す。
    $dst = $clone + "\*"
    Remove-Item $dst -Recurse
} else {
    # なければ作る。
    New-Item -ItemType Directory -Path $clone
}

# コピー元の中身をすべて指定し、コピー先はディレクトリを指定する。(ややこし……)
$src = $origin + "\*"
Copy-Item $src $clone

ファイルの冒頭で Path を一覧しておき、その後は 親ディレクトリには戻るなだぜ。
よく オリジン の中身を消したり、
自分を自分の中にコピーして 再帰的にファイルが増えて 3000個のファイルをゴミ箱に送るはめになったりする。
そういう不注意をなるべく減らそうぜ。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?