Windowsカテゴリーの記事一覧

masOS で自動生成される不可視ファイルを一括削除する PowerShell スクリプト

概要

  • 長年 Mac 上の iTunes で育てあげたライブラリを、Windows のほうで復旧させようと思い立った
  • とりあえず SSD でデータを丸ごと引き上げたものの、macOS 特有の不可視ファイル(.DS_store など)も含まれているため、まずはこれらのお掃除をせねばとなった
  • 手作業で行うのは無理な量なので、一括削除用の PowerShell スクリプトを作成した
  • ソース生成には ChatGPT 4 を使用した

作成したもの

ソース

# masOSで自動生成される不可視ファイルを一括削除する
function Set-removeMacFiles {
    # 現在のディレクトリを取得
    $currentDirectory = Get-Location

    # ログファイルのディレクトリを設定
    $logDirectory = "C:\Users\hi3103\OneDrive\scripts\log\"

    # ログファイル名を生成 (例: "Log_2023-10-02_12-30-00.txt")
    $logFileName = "Log_" + (Get-Date -Format "yyyy-MM-dd_HH-mm-ss") + ".txt"
    $logFilePath = Join-Path $logDirectory $logFileName

    # .DS_Store および `._` から始まるファイルを再帰的に検索し、削除
    Get-ChildItem -Path $currentDirectory -Recurse -Force -File | Where-Object {
        $_.Name -eq ".DS_Store" -or $_.Name -like '._*'
    } | ForEach-Object {
        try {
            # -LiteralPath を使用して、特殊文字を含むパスも正確に削除
            Remove-Item -LiteralPath $_.FullName -Force -ErrorAction Stop
            $message = "Deleted: " + $_.FullName
            # コンソールに表示
            Write-Host $message
            # ログファイルに書き込み
            Add-Content -Path $logFilePath -Value $message
        } catch {
            $errorMessage = "Failed to delete: " + $_.FullName
            $errorDetail = $_.Exception.Message
            # コンソールにエラー情報を表示
            Write-Host $errorMessage -ForegroundColor Red
            Write-Host $errorDetail -ForegroundColor Red
            # ログファイルにエラー情報を書き込み
            Add-Content -Path $logFilePath -Value $errorMessage
            Add-Content -Path $logFilePath -Value $errorDetail
        }
    }

    # 完了メッセージを表示
    $completionMessage = "Deletion complete. Log File: $logFilePath"
    Write-Host $completionMessage
    Add-Content -Path $logFilePath -Value $completionMessage
}

New-Alias -Name removemacfiles -Value Set-removeMacFiles

保存場所

C:\Users\ユーザー名\OneDrive\scripts\profile\removeMacFiles.ps1

上記フォルダに格納した .ps1 ファイルを、自動で $profile にインポートするよう設定してある。

※参考:PowerShell スクリプトを OneDrive の中で管理する

使い方

  1. PowerShell を開く
  2. 削除したいファイルがあるディレクトリに移動
  3. removemacfiles と入力して実行
  4. ログを確認
    • 問題なさそうなファイル名でも失敗する場合がある
    • そういうのは諦めて手動で削除する

PowerShell スクリプトを OneDrive の中で管理する

概要

  • Windows 11 上でよく行う操作をコマンドで実行できるよう、ちょいちょい PowerShell スクリプトを作るようになった
  • クリーンインストールや買い替えなどで再セットアップする際、素早く復旧できるように OneDrive 上でスクリプトを管理する

やること

  1. OneDrive 上に、スクリプトファイルの保存場所を用意する
  2. $profile に、用意した保存場所のスクリプトをすべて読み込む設定を記述する

Read More

PowerShell で1週間分の日報をまとめるための Markdown 形式テキストファイルを生成する

概要

  • 業務で Markdown 形式の日報を書いている
  • 振り返り作業のため、5日分の「やったこと」だけを抜き出してまとめた Markdown 形式の .md ファイルを毎週作成している
  • 日付の見出しを毎回手打ちするのがダルくなってきたので、PowerShell くんにバシッと一発で生成してもらいたい
  • かつ、生成済みの場合は、該当のファイルをテキストエディタで開いてほしい

スクリプトの作成方法

ChatGPT-4 に以下の手順でやってもらった。

  • Linux ベースの OS で動くシェルスクリプトを作ってもらう
  • やりたいことを一部手直し
  • 完成したシェルスクリプトを、Windows PowerShell 用に変換してもらう
  • シェルスクリプトの保存方法・実行方法を教えてもらう

Read More

Windows Powershell で擬似的に open コマンドを使えるようにする

やりたいこと

macOS の Terminal 上で使える open コマンドを、Windows でも使えるようにしたい

  • 現在のディレクトリをエクスプローラで開く
    • 例:open .
  • 指定したパスのファイルを、関連付けているプログラムから開く
    • 例:open ./hoge.html

アプローチ

  • open コマンドは、PowerShell で考えると Invoke-Item が該当しそう
  • Powershell 上で open と叩いたら、 Invoke-Item が走るようにエイリアスを設定すればいいのでは?

思いつきでChatGPT(GPT-4)にやり方を聞いたら簡単そうだったのでやってみた。

Read More

10年以上Macを使い続けたWeb屋のWindows10セットアップ記録

2006年に初めてiMacを買ってからずっとMacユーザーだったが、何をやってもモタつかない快適スペックを求めてWindowsを購入した。
一番長く使ったのはXP、Windows10は約3~4年前に10ヶ月だけ在籍した前職ぶり、という浦島状態から、なるべく快適な環境を目指して日々セットアップ中。
このエントリーはやったこと・これからやることの備忘録。

Read More

Windows XP でリムーバブルメディアをNTFSフォーマットする方法

  1. [マイコンピュータ] よりドライブを選択
  2. [プロパティ] -> [ハードウェア] -> [全ディスク ドライブ] から当該リムーバブルドライブをあらためて選択
  3. [プロパ ティ] -> [ポリシー] の [書き込みキャッシュと安全な取り外し] のオプションを「クイック削除のために最適化する」から「パフォーマンスのために最適化する」に変更
  4. [OK] でプロパティを閉じる
  5. [マイコンピュータ] よりフォーマットしたいドライブを右クリックし、[フォーマット] を選択
  6. ファイルシステムのプルダウンからNTFSを選択して [開始]

引用元:リムーバブルメディアの NTFS フォーマットについて (Microsoft サポートより)