
Windows11でユーザー辞書のおすすめ一覧を一括インポート【Google日本語入力・Microsoft IME】

Snipping Toolでウィンドウキャプチャ & IrfanViewで全画面キャプチャ(右クリック・マウスカーソル含む)
5 Comments
Inline Feedbacks
View all comments
https://www.naporitansushi.com/windows11-explorer-tab/
必要なのはViVeToolだけで、QTTabBarは不要です。
■回避策その2・・・エクスプローラーの再起動時にタブがちゃんと復元できる機能が実装されるまで待つ
https://internet.watch.impress.co.jp/docs/yajiuma/1646558.html
の2択になると思います。
回避策その2の「エクスプローラーの再起動時のタブ復元」はすでに実装されたみたいですが、
https://www.nichepcgamer.com/archives/windows11-improvement-file-explorer-tabs-are-now-restored-after-reboot.html
私は24H2特にファイルエクスプローラーを全く信用していないので、回避策その2で解決できるかは正直微妙です。
■補足■
解決策その1で解決できない場合は
の2択になるはずですが、回避策その2「エクスプローラーの再起動時にタブがちゃんと復元できる機能」は2024年12月末時点でWindows11 Insider Preview ベータチャネル Build 22635.4580 (KB5046733)では提供されているみたいですが、2025.5.1時点でこの機能?は一般のWindows11には実装されていませんので、現時点では回避策その2は機能していません。
つまり回避策その1が必要なはずです、と思います。
■回避策その1のやり方■
ViVeToolをインストール
https://github.com/thebookisclosed/ViVe/releasesにて、「Assets」の箇所のViVeTool-v◯.◯.◯-IntelAmd.zip をダウンロード
↓
ダウンロードしたzipを解凍して、その中身を例えば C:\ViVeTool\ にコピーする、つまりつまり、C:\ViVeTool\ViVeTool.exeがある状態になります。
↓
PC再起動
↓
管理者権限でコマンドプロンプトを開いて※1後述
cd C:\ViVeTool\
ViVeTool /disable /id:37634385
ViVeTool /disable /id:36354489
を実行してPC再起動すれば、エクスプローラーのタブ機能を無効化できます。
やっぱりエクスプローラーのタブ機能を有効に戻したい場合は
cd C:\ViVeTool\
ViVeTool /enable /id:37634385
ViVeTool /enable /id:36354489
で有効に戻せます。
ViVeToolをCドライブ以外にインストールした場合つまり、C:\ViVeTool\ViVeTool.exe以外のパスになる場合
cd コピーしたパス
ViVeTool /disable /id:37634385
ViVeTool /disable /id:36354489
となります。
※1 管理者権限でコマンドプロンプトを開くやり方は、スタートメニューの検索ウィンドウに「コマンド」を入力して下記のどちらかです。
■■■追記・ここまで■■■
■■■さらに追記・ここから■■■
この記事のもゆうさんのコメントから推測すると、再起動時・再ログオン時に以前のフォルダーウィンドウを表示できない場合(※2)はファイルエクスプローラーのタブ機能が原因である可能性がほぼ100%な気がします。
ということで2025.4.29時点では、おそらく回避策その2では解決できないと思います。
回避策その1・・・ViVeToolでエクスプローラーのタブ機能を無効化する、をオススメします。
※2 前述のフォルダーオプションでの設定あるいはサインイン オプションでの設定を有効にしてあれば、ログオン時に以前のフォルダーウィンドウを表示できる人もいるみたいです。
私はフォルダーオプションでの設定・サインイン オプションでの設定ともに有効にしてあってもログオン時に以前のフォルダーウィンドウを表示できなくて、それでこの記事のような対策をしました。
つまり、不具合等が100%再現するわけではなく、これがWindows11特に24H2が超絶イケてない(と個人的に思う)最大の理由です。
■■■追記・ここまで■■■
結論だけ先に書きますと、AutoHotkeyにて”ほぼ完璧に”ログオン時に以前のフォルダーウィンドウを表示することができました。
厳密には、シャットダウン30秒前に開いていたフォルダをPC再起動後に自動で開きます。
※この「30秒前」という数値は自由に変更できますが、ひとまず「30秒前」で様子見しています。
以下、AutoHotkeyのV2にて
ログオン時に以前のフォルダーウィンドウを表示できない
をほぼ解決した、その手順です。
にて
AutoHotkeyのV2をインストールします。
Download → Download v2.0、です。
インストールしたら
C:\Program Files\AutoHotkey\v2
内にAutoHotkey.exeがある、つまり
C:\Program Files\AutoHotkey\v2\AutoHotkey.exe
があることを確認して下さい。
V1とV2ではAutoHotkey.exeが存在するフォルダも後述のコード(V2用)も違うのでご注意下さい。
インストールするのはAutoHotkey V2です。
AutoHotkey(V2)を使って、開いているフォルダ一覧を30秒ごとに記録して、PC再起動時にその一覧のフォルダを自動で開くようにします。
拡張子「.ahk」のファイルを2つ作成してスタートアップに登録します。
■全体の作業手順■
■%userprofile%\Documents\AutoHotkey
のフォルダ内にて、新規作成 → テキスト ドキュメントで2つtxtファイルを作成する。
※「Documents」フォルダ内に「AutoHotkey」フォルダがない場合は作成してください。
上記フォルダは、Winキー + Rで
%userprofile%\Documents\AutoHotkey
と入力してエンターで開きます。
↓
■それぞれ、後述の
のコードをコピペして保存する。
どちらも
文字コード:UTF-8
改行コード:CR+LF
です。
↓
■それぞれのファイル名を
と変更する。
↓
■スタートアップに
それぞれのショートカットを登録する。
↓
パソコンを再起動する。
#Requires AutoHotkey v2.0
saveFile := A_MyDocuments "\AutoHotkey\open_folders.txt"
prevFile := A_MyDocuments "\AutoHotkey\open_folders_prev.txt" ; 前回の内容を保存するファイル名
; 初回実行
SaveOpenFolders()
; タイマー設定
SetTimer(SaveOpenFolders, 30000) ; 30秒おき
SaveOpenFolders() {
global saveFile, prevFile
local folders, list, hwnd, title, potentialPath, file, currentContent, prevContent
; 1. 現在開いているフォルダを取得
folders := ""
list := []
try {
list := WinGetList("ahk_class CabinetWClass")
} catch {
list := [] ; エラー時は空リスト
}
if IsObject(list) && list.Length > 0 {
for hwnd in list { ; Outer For Start
try { ; Outer Try Start
if WinExist("ahk_id " hwnd) { ; Outer If 1 Start
title := WinGetTitle("ahk_id " hwnd)
if (title != "") { ; Outer If 2 Start
potentialPath := Trim(title)
if RegExMatch(potentialPath, "^([a-zA-Z]:\\|\\\\)") && !InStr(potentialPath, "::{") { ; Outer If 3 Start
isDuplicate := false
for _, existing in StrSplit(folders, "`n", "`r") { ; Inner For Start
if Trim(existing) = potentialPath { ; Inner If Start
isDuplicate := true
break
} ; Inner If End
} ; Inner For End
if !isDuplicate { ; Outer If 4 Start
folders .= potentialPath . "`n"
} ; Outer If 4 End
} ; Outer If 3 End
} ; Outer If 2 End
} ; Outer If 1 End
} catch {
; 空のブロック。エラーは無視して次のループへ
} ; Outer Try End
} ; Outer For End
}
; 2. 書き込む内容を決定 (空ならマーカー)
currentContent := ""
if (Trim(folders) != "") {
currentContent := Trim(folders, "`n")
} else {
currentContent := "NO_OPEN_FOLDERS"
}
; 3. 前回の内容と比較し、異なっていれば prevFile を更新
prevContent := ""
try {
prevContent := FileRead(saveFile, "UTF-8")
} catch {
prevContent := ""
} ; 前回の saveFile の内容を読む
if (currentContent != prevContent) {
if (Trim(prevContent) != "" && !InStr(prevContent, "NO_OPEN_FOLDERS")) {
try {
file := FileOpen(prevFile, "w", "UTF-8")
if IsObject(file) {
file.Write(prevContent)
file.Close()
}
} catch {
; エラー時は無視
}
} else if FileExist(prevFile) {
try {
FileDelete(prevFile)
} catch {
; エラー時は無視
}
}
}
; 4. 新しい内容 (currentContent) を saveFile に書き込み
try {
file := FileOpen(saveFile, "w", "UTF-8")
if IsObject(file) {
file.Write(currentContent)
file.Close()
}
} catch {
; エラー時は無視
}
}
#Requires AutoHotkey v2.0
saveFile := A_MyDocuments "\AutoHotkey\open_folders.txt"
prevFile := A_MyDocuments "\AutoHotkey\open_folders_prev.txt" ; ★変更:バックアップとして prevFile を参照
content := ""
sourceFile := ""
; まず saveFile を試す
try {
content := FileRead(saveFile, "UTF-8")
} catch {
content := ""
}
OutputDebug("saveFile Content: " (content != "" ? StrLen(content) . " chars" : "Empty or Read Error"))
; saveFile が空、読めない、またはマーカーの場合は prevFile を試す
if (Trim(content) = "" || InStr(content, "NO_OPEN_FOLDERS")) {
OutputDebug("saveFile is invalid, trying prevFile...")
try {
content := FileRead(prevFile, "UTF-8")
} catch {
content := ""
}
OutputDebug("prevFile Content: " (content != "" ? StrLen(content) . " chars" : "Empty or Read Error"))
; prevFile も空、読めない、またはマーカーなら諦める
if (Trim(content) = "" || InStr(content, "NO_OPEN_FOLDERS")) {
content := "" ; 復元対象なし
OutputDebug("prevFile is also invalid. No restore target.")
} else {
sourceFile := prevFile ; prevFile から復元
OutputDebug("Using prevFile for restore.")
}
} else {
sourceFile := saveFile ; saveFile から復元
OutputDebug("Using saveFile for restore.")
}
; 復元対象があれば実行
if (content != "") {
OutputDebug("Restoring folders from: " sourceFile)
Loop Parse, content, "`n", "`r" {
line := Trim(A_LoopField)
if (line != "") {
try {
OutputDebug("Running: " line)
Run line
Sleep 100 ; 少し待機
} catch {
OutputDebug("Run Error for line: " line)
MsgBox("フォルダを開けませんでした: " line, "復元エラー", 48)
}
}
}
} else {
OutputDebug("No folders to restore.")
}
ExitApp
■2025.5.9 追記■
検索からこのページを訪問されているほとんどの方にとってopen_saved_folders.ahkのコードは修正前・修正後どちらのコードでも問題ないかとは思いますが、
より後述の
をおすすめします。
%userprofile%\Documents\AutoHotkey
のフォルダ内に保存した
の2つのファイルのそれぞれのショートカット
をスタートアップに登録します。
スタートアップのフォルダは
Winキー + Rにて、
shell:startup
で開きます。
パソコンを再起動すれば作業完了です!
以上で、パソコン起動時に
これでひとまず擬似的にログオン時に以前のフォルダを開くことができます。
本当は
を実行したくて何時間も格闘しましたが結局うまくいかず、
という結論に至りました、というか、上記以外ではうまくいきませんでした><
1点注意点というか念のため書いておきますと
■注意■
save_open_folders-30seconds.ahkの
SetTimer(SaveOpenFolders, 30000) ; 30秒おき
は
シャットダウン時に全てのフォルダが閉じられるまでの時間 × 2
より大きな数値を設定する必要があります。
たぶん30秒なら問題ないはずです。
最初は10秒ごとにしたのですが、シャットダウンの処理が始まって、もし
としたら、最後のopen_folders.txtは後述の「NO_OPEN_FOLDERS」と記述されるので、再起動後に1つもフォルダが開かれなくなります。
その閾値がわからないので、ひとまず30秒ごとにしました。
なお、CPU使用率は限りなく低いので(仮に1秒ごとに変更しても)負荷を気にする必要はありません。
上記2ファイルの挙動・仕組みを説明しますと、
■save_open_folders-30seconds.ahk
save_open_folders-30seconds.ahkは常駐しますが、CPU使用率は1%以下・・・かどうかは不明ですが、限りなく少ない負荷です。
※1 従ってopen_folders_prev.txtは、最低でも30秒前より古い状態かつopen_folders.txtとは違う内容となります。
open_folders.txtが何らかの理由で壊れた・開けない場合の少し前のフォルダ一覧がopen_folders_prev.txtというイメージです。
■open_saved_folders.ahk
open_saved_folders.ahkはPC起動時に1回だけ実行されます。
open_saved_folders.ahkの処理は少し複雑です。
※2 「意図的に空でない場合」とは、自分の意志でフォルダを1つも開いていない状態のことです。
意図的にフォルダを1つも開いていない場合はopen_folders.txtの中身は
NO_OPEN_FOLDERS
と1行書いてあります。
「意図的に空でない場合」以外で空になる場合とは、何らかの理由でopen_folders.txtの中身が空になった場合です。
PC起動時にopen_saved_folders.ahkはまず最初にopen_folders.txtを読み込もうとします。
■open_folders.txtが存在し、内容が読み込めて、かつその内容が NO_OPEN_FOLDERS の場合は1つもフォルダは開きません。
意図的に1つもフォルダを開いてない状態で再起動した場合がこれです。
■open_folders.txtが存在し、内容が読み込めて、かつその内容が NO_OPEN_FOLDERS でも空文字列でもない場合は、open_folders.txt の内容でフォルダを開きます。
複数フォルダを開いている状態で再起動した場合がこれです。
”擬似的に”ログオン時に以前のフォルダーウィンドウを表示する、がこれです。
■上記の条件に当てはまらなかった場合、つまりopen_folders.txt が存在しない、読めない、空、または NO_OPEN_FOLDERS だった場合は、open_folders_prev.txt を読み込みます。
■open_folders_prev.txt が存在し、内容が読み込めて、かつその内容が NO_OPEN_FOLDERS でも空文字列でもない場合は、open_folders_prev.txt の内容でフォルダを開きます。
何らかの原因でopen_folders.txtがおかしくなっている・存在していない場合は、open_folders_prev.txtの内容つまり少し前の状態のフォルダ一覧を開きます。
これは意図しない不具合の予防策です。(※3)
■上記以外の場合は、1つもフォルダは開きません。
※3 Windowsのシャットダウン処理をフックしてopen_folders.txtに記録するのが本来の正確な「ログオン時に以前のフォルダーウィンドウを表示する」になるのですが、頑張ってもうまくできなかったので結局AutoHotkeyでの処理になった次第です。
PythonのコードでWindowsのシャットダウン処理をフックしてopen_folders.txtに記録しようと色々チャレンジした時に何度やっても
という流れとなり、Windowsのシャットダウン処理の最中にopen_folders.txtが空の内容で更新され、結果的に再起動時に1つもフォルダが開きませんでした。
結局これは解決できなかったのでPythonは諦めてAutoHotkey V2でチャレンジすることにして、念のため不具合の予防策として(※3)みたいな処理を含めました。
PC起動後、上記open_folders_prev.txtの実行とは別にsave_open_folders-30seconds.ahkが30秒ごとに処理します。
PCを起動してopen_saved_folders.ahkの実行直後に最初に例えば
を開いている場合は30秒後以内に
■open_folders.txtの内容
■open_folders_prev.txt
まだ作成されない
その後例えばopen_saved_folders.ahkの実行後31秒後に
を開いた場合は、open_saved_folders.ahkの実行後60秒後に
■open_folders.txt
■open_folders_prev.txt
となります。
つまりopen_folders_prev.txtは30秒前の状態です。
もしその後開いているフォルダ構成が5分間変わらず、その後(例えば5分1秒後に)変化した場合は
■open_folders.txt
5分30秒後のフォルダ構成
■open_folders_prev.txt
5分前のフォルダ構成
となります。
AutoHotkeyで「ログオン時に以前のフォルダーウィンドウを表示する」をほぼ完璧に解決する手順・説明は以上です。
Windows11、特に24H2は不具合がすごく多い上に、
ということが頻繁に起こります。。。
SkypeがTeamsに移行するのでTeamsを起動したらちゃんと起動しなくて、仕方なくアンインストール・キャッシュ削除・再インストールして起動したら
問題が発生しました。
Teamsを再起動してみて下さい
と表示されて再起動しても、最小化して起動するだけで正常に起動しない、つまり全く使い物にならないという・・・
Windows11の私の評価はWindows98に近いです><
ちなみにWindowsの通常のショートカットは1つの「.lnk」で1つのリンク先しか開けませんが、JamPack Openerというソフトを使えば1つの「.lnk」で複数のフォルダを一括で開くことが可能です。
Windows11でも問題なく動きます。
ただしJamPack Openerの欠点というか個人的には不要な点が1つあり、5個以上のディレクトリが設定されていると「最小化した状態で開くかどうか」のポップアップが表示されます。
普段パソコン起動時に開きたいフォルダはほとんど同じなので、上記の件がなければこの記事にある「ログオン時に以前のフォルダーウィンドウを表示する」の件をAutoHotkeyで解決しようとはしませんでした。
■2025.5.9 追記■
わけあってWindows11を新規インストールしました。
気が向いたらWindows11を新規インストールした件を記事にしますが、新規インストールしたら23H2だったので24H2に更新しましたが、そしたら(2025.5.9時点では)解決策その1だけでWindows側で「ログオン時に以前のフォルダーウィンドウを表示」ができています。
不具合が再現したりしなかったり・・・と再現性に信憑性がないので、
はスタートアップに登録したままにしようと思ったのですが、そうするとPC再起動時にWindows側で以前のフォルダーウィンドウを開くので、その後open_saved_folders.ahkが以前のフォルダーウィンドウを開こうとした際に
「フォルダを開けませんでした」
的なエラー表示というかポップアップが表示されます。
これを修正しました。
#Requires AutoHotkey v2.0
#Warn ; 警告を有効にしておくと開発に役立つ
global content := "" ; 警告対策として明示的に初期化
global sourceFile := "" ; 警告対策として明示的に初期化
saveFile := A_MyDocuments "\AutoHotkey\open_folders.txt"
prevFile := A_MyDocuments "\AutoHotkey\open_folders_prev.txt" ; ★変更:バックアップとして prevFile を参照
; まず saveFile を試す
try {
content := FileRead(saveFile, "UTF-8")
} catch {
content := ""
}
OutputDebug("saveFile Content: " (content != "" ? StrLen(content) . " chars" : "Empty or Read Error"))
; saveFile が空、読めない、またはマーカーの場合は prevFile を試す
if (Trim(content) = "" || InStr(content, "NO_OPEN_FOLDERS")) {
OutputDebug("saveFile is invalid, trying prevFile...")
try {
content := FileRead(prevFile, "UTF-8")
} catch {
content := ""
}
OutputDebug("prevFile Content: " (content != "" ? StrLen(content) . " chars" : "Empty or Read Error"))
; prevFile も空、読めない、またはマーカーなら諦める
if (Trim(content) = "" || InStr(content, "NO_OPEN_FOLDERS")) {
content := "" ; 復元対象なし
OutputDebug("prevFile is also invalid. No restore target.")
} else {
sourceFile := prevFile ; prevFile から復元
OutputDebug("Using prevFile for restore.")
}
} else {
sourceFile := saveFile ; saveFile から復元
OutputDebug("Using saveFile for restore.")
}
; 復元対象があれば実行
if (content != "") {
OutputDebug("Restoring folders from: " sourceFile)
Loop Parse, content, "`n", "`r" {
line := Trim(A_LoopField)
if (line != "") {
; フォルダが既に開かれていないか確認
alreadyOpen := false
for hwnd in WinGetList("ahk_class CabinetWClass") {
try {
winPath := ""
winPath := WinGetTitle(hwnd)
if (InStr(line, winPath) || InStr(winPath, line)) {
alreadyOpen := true
OutputDebug("Folder already open: " winPath)
break
}
} catch {
; 無視
}
}
if (!alreadyOpen) {
try {
OutputDebug("Running: " line)
Run line
Sleep 100 ; 少し待機
} catch {
OutputDebug("Run Error for line: " line)
; すでにチェック済なので通常は出ない
}
} else {
OutputDebug("Skipped opening (already open): " line)
}
}
}
} else {
OutputDebug("No folders to restore.")
}
ExitApp
以前の私のように確実にWindows側で以前のフォルダーウィンドウが開けない場合は修正前のopen_saved_folders.ahkでも問題ありませんが、今の私のように
という場合は上記修正後のopen_saved_folders.ahkをお使いください。
open_saved_folders.ahkに関して修正前と修正後の違いは1点だけで、修正後のコードでは
という挙動に変更しました。
■追記■
以下、表題の「ログオン時に以前のフォルダーウィンドウを表示できない」件と全く関係なくてすみません。
私はKokodekaという拡大鏡のソフト
をPC起動時に立ち上げていて、
という使い方をしているのですが、(上のほうに書きましたが)わけあってWindows11を新規インストールしたのですが今のところ解決策その1だけでWindows側で「ログオン時に以前のフォルダーウィンドウを表示」ができています。
Windows11および24H2はいつどんな不具合が発生するか全く信用できないのでスタートアップにKokodekaのショートカットを登録してあるのですが、現時点ではWindowsのサインイン オプションの設定でKokodekaが起動するみたいで、その後スタートアップのショートカットがさらにKokodeka.exeを起動しようとするので
と、2重起動の警告のポップアップが表示されます。
かといってスタートアップのKokodeka\Kokodeka.exeのショートカットを削除すると、Windows11は不具合がたくさんあり、いつまたログオン時に以前のフォルダーウィンドウを表示できなくなるか、全く安心できないです。
・
・
・
ということで、AutoHotkeyのV2にて
というスクリプトにて解決しました。
■start_kokodeka.ahk※V2用です。
#Requires AutoHotkey v2.0
; Kokodeka.exe のパス
exePath := "D:\Program Files\Kokodeka\Kokodeka.exe"
exeName := "Kokodeka.exe"
; 既に実行中か確認
if !ProcessExist(exeName) {
try {
Run exePath
OutputDebug("Kokodeka.exe を起動しました。")
} catch {
MsgBox("Kokodeka.exe の起動に失敗しました。", "エラー", 16)
}
} else {
OutputDebug("Kokodeka.exe は既に起動中です。何もしません。")
}
ExitApp
start_kokodeka.ahkのショートカットをスタートアップに登録すればこの件は解決です。
start_kokodeka.ahkのバックアップも取ってありますが、今回文字通りたった1クリックのミスだけで最終的に
の全てが吹き飛んだので致し方なくWindows11を新規インストールして色々復旧中でして、バックアップ的な意味合いで念の為この記事に書いた次第です。
なお、
のショートカットも再度スタートアップに登録してあります。
上記諸々のバックアップは(色々なセットアップが一段落したら)改善して再構築します。
以上、余計な話で失礼しました。
たった1クリックのミスだけで全て失った件は気が向いたら記事にするかもです><
■さらに追記■
「ログオン時に以前のフォルダーウィンドウを表示できない」とは関係ない件、さらに追記ですみません。
ついでに別のAutoHotkey(V2)のスクリプトも書いておきます。
Windows11の設定 → システム → ストレージ → ストレージセンサーにて、
に設定してあっても削除されないファイルがたくさんあるので、
「1週間ごとに」の件は、%userprofile%\AutoHotkey\内に実行履歴
を作成・保存しておいて、1週経過した場合のみ
%userprofile%\AppData\Local\Temp
%systemdrive%\Windows\Temp
を削除します。
1週間ごとにしたのは、、万が一何か問題が発生した場合はcleanup_details.logを見て解決するためです。
PCを起動して2分経過後にしたのは、念のため2分遅延させてるだけです。
というAutoHotkey(V2)のスクリプトです。
↓■weekly_temp_cleanup.ahk
#Requires AutoHotkey v2.0
#SingleInstance Force
Sleep(1000 * 60 * 2) ; 2分待機(PC起動後の遅延)
;Sleep(10) ; テストする場合はこちらのコメントを外す
; パス設定
logFile := A_MyDocuments "\AutoHotkey\cleanup_history.txt"
detailLogFile := A_MyDocuments "\AutoHotkey\cleanup_details.log"
; フォルダがなければ作成
if !DirExist(A_MyDocuments "\AutoHotkey")
DirCreate A_MyDocuments "\AutoHotkey"
; 現在の日時(数値形式)
currentDate := FormatTime(, "yyyyMMddHHmmss")
logEntry := "実行開始: " FormatTime(, "yyyy-MM-dd HH:mm:ss") "`n"
try FileAppend logEntry, detailLogFile
; 前回の実行日時を取得(ログファイルに保存されている形式は yyyyMMddHHmmss)
lastRunDate := ""
if FileExist(logFile)
lastRunDate := Trim(FileRead(logFile))
; 1週間経過判定
shouldCleanup := true
if lastRunDate != ""
{
try {
diff := DateDiff(lastRunDate, currentDate, "Days")
if (diff < 7)
{
shouldCleanup := false
logEntry := "前回の実行から " diff " 日なのでスキップします(前回: " lastRunDate ")`n"
try FileAppend logEntry, detailLogFile
}
} catch as e {
logEntry := "日付差分取得時エラー: " e.Message "`n"
try FileAppend logEntry, detailLogFile
; 強制的に続行
shouldCleanup := true
}
}
if shouldCleanup
{
tempFolders := [A_Temp, A_WinDir "\Temp"]
deletedCount := 0
skippedCount := 0
logEntry := "クリーンアップを開始します:`n"
try FileAppend logEntry, detailLogFile
for folder in tempFolders
{
logEntry := "フォルダ処理中: " folder "`n"
try FileAppend logEntry, detailLogFile
try
{
Loop Files folder "\*.*", "FD"
{
try
{
if InStr(FileGetAttrib(A_LoopFileFullPath), "D")
{
DirDelete A_LoopFileFullPath, 1
}
else
{
FileDelete A_LoopFileFullPath
}
deletedCount++
logEntry := "削除: " A_LoopFileFullPath "`n"
try FileAppend logEntry, detailLogFile
}
catch as e
{
skippedCount++
logEntry := "スキップ: " A_LoopFileFullPath " (理由: " e.Message ")`n"
try FileAppend logEntry, detailLogFile
continue
}
}
}
catch as e
{
logEntry := "フォルダ処理エラー: " folder " - " e.Message "`n"
try FileAppend logEntry, detailLogFile
continue
}
}
logEntry := "クリーンアップ完了: " FormatTime(, "yyyy-MM-dd HH:mm:ss") "`n"
logEntry .= "削除されたアイテム: " deletedCount "`n"
logEntry .= "スキップされたアイテム: " skippedCount "`n"
logEntry .= "-----------------------------------`n"
try FileAppend logEntry, detailLogFile
; 実行履歴を更新(数値形式で保存)
try FileDelete logFile
try FileAppend currentDate, logFile
}
else
{
logEntry := "クリーンアップはスキップされました`n"
logEntry .= "-----------------------------------`n"
try FileAppend logEntry, detailLogFile
}
ExitApp
このweekly_temp_cleanup.ahkのショートカットをスタートアップに登録すればOKです。
テストしたい場合は
Sleep(1000 * 60 * 2) ; 2分待機(PC起動後の遅延)
;Sleep(10) ; テストする場合は上記を「;」でコメントアウトして、こっちの「;」は削除して即実行する
の箇所を
;Sleep(1000 * 60 * 2) ; 2分待機(PC起動後の遅延)
Sleep(10) ; テストする場合は上記を「;」でコメントアウトして、こっちの「;」は削除して即実行する
にすれば、weekly_temp_cleanup.ahkダブルクリックで即実行できます。
ちゃんと動くことを確認したら元に戻してください。
念のため2分遅延させてるだけなので常に即実行でも問題ありません、とは思いますが、PC起動時にシステム側でTemp内に何か生成している可能性もあります。