簡単なps1ファイルを書く ファイル移動

おはようございます。すぎやまです。

この記事では、ps1ファイルを使用してファイルを移動する方法を紹介します。

まず、結論を記載します。

ps1ファイルでファイル移動

  • ファイル移動は「Move-Item」コマンドを使用
  • ファイル情報を取得→ファイルを移動

下記、詳細を説明します。

使用するコマンド

前述の通り、「Move-Item」コマンドを使用します。

文法機能
Move-Item -Path [元ファイル] -Destination [移動先][元ファイル]を[移動先]に移動する

詳細はこちらのサイトをご覧ください。

ファイル移動のサンプル

先述のコマンドを使用することで、ファイル移動が出来ます。
次の例を考えます。

例:「てすと.pptx」を「移動先」のフォルダに移したい

テスト用のコードは下記の通りです。

# カレントディレクトリを取得
$folder = Get-Location

# パスを作成
$filepath = Join-Path -Path $folder -ChildPath "\てすと.pptx"
$folderpath = Join-Path -Path $folder -ChildPath "\移動先\"

# ファイル移動
Move-Item -Path $filepath -Destination $folderpath

Write-Host "ファイルの移動が完了しました。"

これを使用すると、ファイルのある場所の「てすと.pptx」というファイルを「移動先」に移せます。

特定のファイルのみファイル移動

先ほどの機能を応用することで、指定した形式のファイルを移動させることが出来ます。

# カレントディレクトリを取得
$folder = Get-Location

# ファイル形式をユーザーに入力させる
$fileFormat = Read-Host "ファイルの形式を入力後、エンターキーを入力してください(例: xlsx, docx, txt, csv ...)"

# 入力が空白の場合、終了
if ([string]::IsNullOrWhiteSpace($fileFormat)) {
    Write-Host "ファイル形式が入力されませんでした。スクリプトを終了します。"
    exit
}

# まとめる先のフォルダを設定
$destinationFolder = Join-Path -Path $folder -ChildPath $fileFormat

# フォルダが存在しなければ作成する
if (-not (Test-Path $destinationFolder)) {
    New-Item -ItemType Directory -Path $destinationFolder
}

# 指定した拡張子のファイルを取得して移動
Get-ChildItem -Path $folder -Filter "*.$fileFormat" | ForEach-Object {
    Move-Item -Path $_.FullName -Destination $destinationFolder
}

Write-Host "ファイルの移動が完了しました。"

こちらのコードでは、
ファイル情報を取得→ファイルを移動
という処理をしています。

使用方法はこちらの記事をご覧ください。

その他のps1ファイル

今回はファイル移動に焦点を当てましたが、
ps1ファイルを使用するとその他にも様々な処理も行うことができます。

ps1ファイルに可能なことを大まかに知りたい方はこちらの記事を、
実際に使用できるコードを知りたい方はこちらの記事を参照ください。

以上、最後まで読んでくださりありがとうございました。

タイトルとURLをコピーしました