前回に続いて、Powershellでよく使われる基本的なコマンドレットについて見ていきましょう。
1. ディレクトリ操作コマンドレット
前回の続きでディレクトリの操作に関するコマンドレットを見ていきましょう。
1.1. ファイルの中身を表示する(Get-Content)
まずは前回の例題で紹介したGet-Content
についてです。
使い方を見ていきましょう。
Set-Location D:\powershell\data # 資料フォルダへ移動
Get-Content sample1.txt
Get-Content .\sampleFolder1\sample3.txt # パスを指定すれば、カレントディレクトリ外のファイルも見れる
Get-Content -Path sample1.txt # -Pathと指定してもOK
Get-Contentはパラメータで渡されたパスに該当するファイルの中身を画面に表示します。
渡しているのはファイル名ではなく、ファイルのパスであることに注意しましょう。
つまり、相対パス もしくは 絶対パスで記述する必要があります。
また、3番目の例で書かれている通り、-Pathと書いても同じ結果になります。
この仕組みについても後ほど紹介していきます。
例題1.
Set-Locationを使用して、Dドライブ直下に移動しなさい。
その上で、資料内のどこかにあるsample6.txtを表示しなさい。
1.1.1. 位置指定パラメータと名前付きパラメータ
以下の2つの処理を確認してみましょう
Get-Content D:\powershell\data\sample1.txt
Get-Content -Path D:\powershell\data\sample1.txt
2つの処理は同じ結果となりますが、-Pathが書かれている、書かれていないの違いがあります。
パラメータの指定の方法には、2つ種類があり、上の方法は位置指定パラメータと呼ばれます。
パラメータには、渡す順番によってどのパラメータに渡すか決まっているものがあります。
「Get-Contentの0番目のパラメータはファイルのパス」と決まっているので、Get-Contentに続けてファイルのパスを書くと、そのファイルの中身が確認できます。
一方、どのパラメータに値を渡すかを明示的に指定する場合は、名前付きパラメータを使います。
この方法だと渡す順番を気にせずに、パラメータに値を渡せます。
また、パラメータによっては、名前付きパラメータでないと値を渡せないものがあるので注意しましょう。
各コマンドレットのパラメータの種類やパラメータの順番はGet-Help
で確認できます。
Get-Help Get-Content -Online
例題2.
Set-Locationを使用して、Dドライブ直下に移動しなさい。
その上で、資料内のどこかにあるsample7.txtを表示しなさい。
※sample7.txtはutf8でエンコードされている。
文字化けを解消するためのパラメータの指定方法を、Get-Help Get-Content -Online
を使って調べること
例題3.
dataフォルダ直下のファイルの一覧を表示しなさい。
ただし、表示するのはファイルのみでフォルダは表示しないこと
※Get-Help Get-ChildItem -Online
でパラメータを調べること
ここまでは、Get-*
コマンドを中心に、ディレクトリに影響を与える操作は行いませんでした。
ここからは、主にディレクトリ(とその中のファイル)に影響を与える操作を中心に解説します。
1.2. ファイル/フォルダの新規作成(New-Item)
まずは、ファイル、フォルダを新しく作る方法を学びます。
ファイル、フォルダの新規作成にはNew-Item
を使います。
Set-Location D:\powershell\data
New-Item .\sample1.log -ItemType File # 位置指定Ver -ItemTypeでファイルの種別を指定
New-Item -Path .\sample1.log -ItemType File # 名前付きVer
New-Item -Path . -Name sample1.log -ItemType File # ファイルを格納する場所とファイル名を分けて指定
0番目のパラメータはPathとなっていて、位置指定・名前付きどちらの指定も可能です。
Pathにはファイル名を含めた相対パス or 絶対パスを指定します。
またItemTypeパラメータではファイルの種別を指定できます。
フォルダを作成したい場合、ItemTypeにDirectory
を指定しましょう。
こちらは例題で確認してみます。
最後の例では、ファイルの格納先と作成するファイル名を別々のパラメータで指定しています。
同じフォルダ内に複数ファイルをまとめて作成する場合、共通している格納先が分離していたほうが書きやすくなります。
この恩恵は、ループステートメントを学ぶと理解できると思います。。
例題3.
dataフォルダの直下にtemporary
という名前のフォルダを作成しなさい。
例題4.
以下の処理を2回以上実行しようとするとエラーが発生する。
New-Item .\sample1.log -ItemType File
New-Itemのヘルプを確認し、エラーを出さずに強制的に既存ファイルを上書きするにはどうすればよいか考え、実行しなさい。
1.3. ファイルのコピー(Copy-Item)
ファイルのコピーの仕方を学びましょう。
ファイルのコピーにはCopy-Item
を使います。
※例題3が実施された前提で説明します。
Copy-Item .\sample1.txt temporary # 位置指定Ver
Copy-Item -Path .\sample1.txt -Destination temporary # 名前付きVer
Copy-Itemには①コピー元のファイルのパス、②コピー先のフォルダのパスを必須で渡す必要があります。
例題5.
sampleFolder2内のsample8.logをtemporaryフォルダへコピーしなさい。
1.2.1. ワイルドカード
Copy-Itemなどいくつかのコマンドレットではワイルドカードが使えます。
ワイルドカードを使うと、パラメータに曖昧な値を渡すことができ、その条件に一致する対象に対して、一括して処理させることが可能です。
まずは、その処理を見てみましょう。
※dataフォルダ上で実行しましょう。
Copy-Item -Path sample1.* -Destination .\temporary\
Pathにはsample1.*
という文字が渡されています。
この*がワイルドカードで、この部分には0文字以上のすべての文字が入ります。
この条件に該当dataフォルダ上のファイルは、sample1.txt、sample1.py、sample1.logになります。
この3つのファイルがすべてtemporaryフォルダにコピーされます。
ワイルドカードを使うことで、複数ファイルへの処理が簡単に記述できます。
ワイルドカードに関して詳しく知りたい場合はこちらのリンクを参照してください。
例題6.
sampleFolder1の中にある拡張子が.txtのファイルをすべてtemporaryフォルダに移動しなさい。
1.4. ファイルの移動(Move-Item, [Rename-Item])
コピーではなく、ファイルを移動したい場合はMove-Item
を使います。
※temporaryフォルダのsample1.logを削除して実行しましょう。
Move-Item -Path sample1.log -Destination .\temporary\ # 移動先のフォルダを指定
Move-Item -Path sample1.log -Destination .\temporary\sample1.log # 移動先のフォルダとファイル名を指定
上の書き方はCopy-Itemと同じです。
下の書き方の場合、ファイル名も含めて指定しています。
実はMove-Itemは移動をする際、併せてファイル名をリネームすることができます。
New-Item test.txt -ItemType File
move-Item -Path test.txt -Destination .\temporary\test1.txt
フォルダの移動を伴わずにリネームだけしたい場合、Rename-Item
というコマンドレットが用意されています。
こちらも使い方を調べて使えるようにしておきましょう。
例題7.
temporaryフォルダにあるtest1.txtをtest2.txtにリネームしなさい。
1.5. ファイルの削除(Remove-Item)
フォルダ操作の最後は、ファイルの削除になります。
こちらはRemove-Item
を使います。
Remove-Item -Path .\temporary\test2.txt
Remove-Item -Path .\temporary\test2.txt -Confirm # -Confirmをつけると削除前に確認メッセージが表示される
また、Remove-Itemもワイルドカードを使って、複数ファイルをまとめて削除することが可能です。
例題8.
temporaryフォルダ内のすべてのファイルを削除しなさい。
例題9.
temporaryフォルダを削除しなさい
Prev : 02.コマンドの基本①
Next : 04.変数