powershellでまとめてファイルを移動する方法を書いておこうと思う。
ファイル移動になぜpowershellをつかうのか
ちょっとしたファイル移動であればpowershellのようなcuiではなくて、guiでマウス操作したほうが普通に早い。しかしだ。マウス操作ははっきりいって【だるい】のである。
マウス操作はマウスを浮かせるときに腕の筋肉を駆使する。それがおもいのほかきつい(ほんとは全然きつくない)たいしてpowershellのcuiだとキーボードをたたくだけで腕の負担があまりない。だからpowershellでまとめてファイル移動を行いたいのである。
powershellのファイル移動はmove-item
powershellのファイル移動の基本はmove-itemコマントレットを使うことだ。ちなみにエイリアスは【mv】である。でこのmove-itemの書き方が重要なわけだけど、まとめてファイル移動を行う方法はよくわからず100回くらいやりすごしてきた。もう決着をつけないといけない。
まずmove-itemには2つの役割があって、ファイル移動とファイルの名前変更という役割がある。何が言いたいかだが、結局のところmove-itemには2つの書き方があるのである。
move-item sample.txt .\desktop\sample.txt move-item sample.txt .\desktop
上記の2つの構文は同じことをしている。しかしここで重要なのは、ファイルの移動だけを行いたいときは、2つ目の引数にファイル名を指定する必要はないということである。つまり移動したいディレクトリを指定するだけでいい。【ディレクトリを指定するだけ】というのがわかっていなければpowershellでまとめてファイルを移動する方法は失敗しつづける。
これを理解したうえで次にすすもう
powershellでまとめてファイルを移動するには?
powershellでまとめてファイルを移動するときももちろんmove-itemを使う。
しかし、とりあえず下記の構文は失敗する。
mv ls *.txt desktop
この構文は【ls *.txt】の部分がまずい。そのため変数に入れてやる必要がある。
$files = ls *.txt mv $files desktop
上記の構文は成功する。
ちなみに一個前のフォルダにまとめてファイル移動する方法は次のとおりだ。
$files = ls *.txt mv $files ..\
おまけ
【ls *.txt】の部分はじつは、変数を使わなくても生書きできる。
mv (ls *.txt) desktop
上記の構文は成功する。()を使えば成功するんだなあ・・・。ちなみにダブルクォーテーションでは成功しないので注意。
コメント