fc2ブログ

(元)社内SEの徒然なる日記

powerShellでファイル操作をしてみた

■ 基本

powerShell関係の小話も、結構な数になってきましたが、基本的な事って何も書いてないですよね。んで、今更ですがファイル(フォルダ)の作成、コピー、削除、存在確認の方法を書きました。

■ ファイルやフォルダを作成する

作成は、New-Itemコマンドレットを使用します。
フォルダを作成する時は、こんな感じになります。
# フォルダの作成
New-Item -path フォルダを作成するパス -name 作成するフォルダ名 -type directory

# これでも作れます。
New-Item 作成するフォルダのフルパス -ItemType Directory


ファイルの場合は、type パラメータにfileを設定します。
forceパラメータを指定すると、既存ファイルを空のテキストで上書きします。
# maeda.txtファイルを作成します。
New-Item d:\aaa\maeda.txt -type file -force


valueパラメータで、文字を追加することも出来ます。
# maeda.txtファイルを作成します。
New-Item d:\aaa\maeda.txt -type file -force -value "この文字を先頭に書き込む"


■ ファイルをコピーする

Copy-Itemコマンドレットでコピーできます。フォルダの場合は、Recurseを指定すると指定したフォルダの子要素もコピーしてくれます。逆に言うと、付けないと指定したフォルダが空の状態でコピーされます。
# maeda.txtファイルをCドライブ直下にコピーします。
Copy-Item d:\aaa\maeda.txt c:\

# aaaフォルダをCドライブ直下にコピーします。
Copy-Item d:\aaa c:\ -Recurse


Copy-Itemコマンドレットは、他にもたくさんのパラメータが指定できます。例えば、特定の条件に合致する項目を除外する、とかが可能なようです。

上手く使えば、バッチのxcopyみたいなことも出来そうですね。

■ 削除

削除は、Remove-Itemコマンドレットを使用します。Recurseパラメータを付けると、子要素(サブフォルダとか)も一緒に削除してくれます。
# フォルダを削除
Remove-Item 'C:\NAVIDIC\naviadmin\RN.bac\ALL' -Recurse

# aaaフォルダ以下の全てのファイル、フォルダを削除
Remove-Item ('d:\aaa' + '\*') -Recurse

# maeda.txtファイルを削除
Remove-Item d:\aaa\maeda.txt


■ 存在確認

ファイルやフォルダの存在確認は、Test-Pathコマンドレットを使用します。Trueで存在する、Falseで存在しないです。
# maeda.txtファイルが存在する場合は削除します。
if ((Test-Path d:\aaa\maeda.txt) -eq $True) {Remove-Item d:\aaa\maeda.txt}

# aaaフォルダが存在する場合は削除します。
if ((Test-Path d:\aaa) -eq $True) {Remove-Item d:\aaa -Recurse}


■ 後書き

サンプルでは、単純にファイルとフォルダの存在確認のみをしましたが、実はかなり強力な機能です。Microsoftのホームページによると、指定したフォルダ以下の要素まで含めて一致しているか確認したりできるようですね。

バックアップの結果検証とかで使えるかな?

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する