※当サイトは、アフィリエイト広告を利用しPRを含みます。

技術系

ドラッグアンドドロップだけでファイルのバックアップを作成するPSツール

タイトルの内容ですが、まずはこちらの記事をご覧いただければ幸いです。

 

Windows11からVBSが非推奨になってまして、VBSで一生懸命書いたコードもお蔵入り…。

と悩んでましたが、「Powershellで書けばええやんけ」と思い立ったが吉日。書き直しました。

 

ドラッグアンドドロップだけでファイルのバックアップを作成するPowershellツール

使い方はVBSのとほぼ同じですが、一点だけ大きく違います。

sendtoに拡張子ps1ファイルを入れても、マウス右クリックメニューの送るに表示されません。

解決策としては、batファイルを噛ませることです。

 

さっそくコードを見ていきましょう。まずはPowershellから。

reCopy.ps1のファイル名で保存してください。(ファイル名のセンスはアレですが)

Add-Type -AssemblyName Microsoft.VisualBasic
Add-Type -AssemblyName System.Windows.Forms

if ($args.Count -eq 0) {
    [System.Windows.Forms.MessageBox]::Show("バックアップしたいファイルをこのアイコンにドロップしてください", "使い方", 'OK', 'Information')
    exit
}

# 1. バックアップフォルダの入力ボックスを表示
$backupDir = [Microsoft.VisualBasic.Interaction]::InputBox(
    "バックアップフォルダを指定してください(空欄なら元フォルダに保存されます)",
    "バックアップ先の指定",
    ""
)

# 2. フォルダ指定があれば作成(なければ元フォルダ使う)
if (-not [string]::IsNullOrWhiteSpace($backupDir)) {
    if (-not (Test-Path $backupDir)) {
        New-Item -Path $backupDir -ItemType Directory | Out-Null
    }
}

# 3. 各ファイルをバックアップ処理
foreach ($file in $args) {
    if (-not (Test-Path $file)) { continue }

    $source = Get-Item $file
    $sourceFolder = Split-Path $source.FullName
    $basename = [System.IO.Path]::GetFileNameWithoutExtension($source.Name)
    $ext = $source.Extension
    $date = Get-Date -Format "yyyyMMdd"

    $targetFolder = if (-not [string]::IsNullOrWhiteSpace($backupDir)) { $backupDir } else { $sourceFolder }
    $filename = "$basename" + "_$date$ext"
    $destPath = Join-Path $targetFolder $filename

    Write-Host "`nコピー元: $($source.FullName)"
    Write-Host "コピー先: $destPath"

    if ($source.FullName -ne $destPath) {
        Copy-Item -Path $source.FullName -Destination $destPath -Force
    } else {
        Write-Host " コピー元とコピー先が同じなのでスキップ"
    }
}

 

 

続いてbatファイルです。

reCopy.batのファイル名で保存してください。(ファイル名のセンス…)

@echo off
powershell -ExecutionPolicy Bypass -File "%~dp0reCopy.ps1" %*
# pause #デバッグ用

 

 

ツールの使い方

① Windowsキー+Rキーを押し”Shell:sendto”を入力してSendtoフォルダを開きます。

② SendtoフォルダにreCopy.ps1とreCopy.batファイルを保存してください。

③ 適当なファイルを右クリックし、送る>reCopy.bat を選択してください。

バックアップファイルが作成されます。複数ファイルも可能です。

 

 

著作権等

プログラムをカスタマイズして2次利用する際は当ブログへのリンクをお願いします。

商用利用は禁止です。

 

 

 


社畜系インフラエンジニアブログのTOPへ戻る

コメントもらえたら泣いて喜びます!
  • この記事を書いた人
  • 最新記事
生き残りたいインフラエンジニアのカナデ

kanade

IT関連の仕事に従事し気付けば20余年。好きな言葉は「よくわからないけど動いてる」です。どうにかして生き残りたいアラフォーのIT系エンジニア。

-技術系
-