「Daily Code」では、毎日の事務作業を少し楽にする小さな方法を紹介します。
この記事の対象と前提
対象:PC初心者、事務職、オフィスワーカー
目的:ファイル・フォルダ、安全確認、設定・状態確認
環境:Windows、PowerShell
方法:コピペ、試して理解
タグ:ファイル、比較、SHA-256、PowerShell、Windows
難しさ:はじめて
所要時間:約10分
こんなときに役立つ
たとえば、こんな経験はありませんか?
「最終版.xlsx」と「最終版_本当の最終.xlsx」がある
同じ名前のZIPファイルを2回ダウンロードした
USBメモリへコピーしたファイルが元と同じか心配
誰かから「このファイルと同じ?」と聞かれた
配布サイトに「SHA-256」という長い文字列が書いてあるが意味が分からない
Windowsのエクスプローラーでは、
ファイル名
ファイルサイズ
更新日時
などは確認できます。
ただし、それだけでは中身が完全に同じかまでは分かりません。
そこで使うのが「ファイルの指紋」です。
何が便利になるか
同じ名前・同じサイズのファイルでも本当に中身が同じか、Windows標準のPowerShellで確認する。 画面で一件ずつ確認する作業を、再現しやすい手順にできます。
GUIでできる方法
PowerShellを使う前に、Windowsのエクスプローラーでも確認してみましょう。
比べたいファイルを右クリック
プロパティを開く
「サイズ」と「更新日時」を見る
サイズが違えば、ファイルの中身も違う可能性が高いです。
ただし、
サイズが同じ = 中身も同じ
とは限りません。
ここからPowerShellの出番です。
GUIでは大変になる場面
件数が増えたり、同じ確認を繰り返したりすると、目視だけでは見落としや操作のばらつきが起きやすくなります。
コピペで試す
Get-FileSha256.ps1
#requires -Version 5.1
<#
.SYNOPSIS
ファイルの「指紋(SHA-256)」を確認します。
.DESCRIPTION
指定したファイルの内容からSHA-256という値を計算します。
難しく考えなくて大丈夫です。
同じ内容のファイルなら、基本的に同じ値になります。
このスクリプトはファイルを読み取るだけです。
ファイルの内容を書き換えたり、削除したりはしません。
.EXAMPLE
.\Get-FileSha256.ps1 -Path "C:\Temp\sample.txt"
#>
param(
# 確認したいファイルの場所を指定します。
# 例: C:\Temp\sample.txt
[Parameter(Mandatory = $true)]
[string]$Path
)
# ------------------------------------------------------------
# 1. ファイルが本当にあるか確認
# ------------------------------------------------------------
# 入力ミスのまま処理を続けると分かりにくいので、
# 最初に「その場所に何かあるか」を確認します。
if (-not (Test-Path -LiteralPath $Path)) {
Write-Host ""
Write-Host "ファイルが見つかりません。" -ForegroundColor Yellow
Write-Host "指定した場所: $Path"
Write-Host ""
Write-Host "ファイルの場所と名前をもう一度確認してください。"
exit 1
}
# ------------------------------------------------------------
# 2. Windowsが認識している正式なファイルの場所を取得
# ------------------------------------------------------------
$resolvedPath = (Resolve-Path -LiteralPath $Path).Path
# ------------------------------------------------------------
# 3. 間違ってフォルダを指定していないか確認
# ------------------------------------------------------------
$item = Get-Item -LiteralPath $resolvedPath
if ($item.PSIsContainer) {
Write-Host ""
Write-Host "フォルダではなく、確認したいファイルを指定してください。" -ForegroundColor Yellow
Write-Host "指定した場所: $resolvedPath"
exit 1
}
# ------------------------------------------------------------
# 4. ファイルの「指紋」を計算
# ------------------------------------------------------------
# Get-FileHash はPowerShellに標準で用意されている機能です。
# ファイルを書き換える処理ではありません。
$hashResult = Get-FileHash -LiteralPath $resolvedPath -Algorithm SHA256
# ------------------------------------------------------------
# 5. 結果を見やすく表示
# ------------------------------------------------------------
Write-Host ""
Write-Host "=== ファイル確認結果 ==="
Write-Host ""
Write-Host "ファイル : $resolvedPath"
Write-Host "方式 : $($hashResult.Algorithm)"
Write-Host "指紋 : $($hashResult.Hash)"
Write-Host ""
Write-Host "別のファイルも確認し、「指紋」が同じか比べてみてください。"
実行結果
対象:PC初心者・事務職 / 所要時間:約5〜10分 / 難しさ:🟢 はじめて
「同じ名前のファイルが2つあるけれど、本当に同じもの?」
「ダウンロードしたファイルが、配布元のファイルと同じか確認したい」
そんなときに使える小さな便利ワザです。
今回は、Windowsに最初から入っている PowerShell を使います。
プログラミングの知識は不要です。まずは1行コピーして試します。
ここに示した表示例と予想はサンプルREADME由来です。このUbuntu上ではWindows PowerShellによる実行確認はしていません。
自分で試すテスト
ここが今回のサンプルで一番大事なところです。
うまくいかないとき
応用
この考え方を使うと、次のようなサンプルへ発展できます。
フォルダの中に同じファイルがないか探す
コピー前とコピー後が同じか一括確認する
ファイル一覧をExcelへ出す
更新されたファイルだけ一覧にする
PowerShellをダブルクリック感覚で使えるようにする
自動化への発展
1件で手順を確認した後は、複数ファイルの一括確認やCSVへの記録、定期実行へ発展できます。業務データでは、まずコピーで試してください。
仕組みを知りたい人向け
Get-FileHash はPowerShell標準のコマンドです。
今回のスクリプトでは、さらに
ファイルが本当に存在するか
フォルダを間違って指定していないか
絶対パスはどこか
を確認してからHashを計算しています。
このあたりは「まず使ってみたい」段階では読み飛ばして構いません。
GitHubリンク
README、sample.json、最新のソースコードは Daily-Code-Samples #001 で確認できます。
まとめ
まずGUIで確認できることを押さえ、必要なときだけコピーできる手順を使うのが安全です。結果は自分の環境で確認し、未検証の表示例を事実として扱わないようにしてください。

コメント