◆追記2025/04/29
他のPCで確認しましたら問題有りませんでした。
よって、私のメインPCの問題みたいです。
◆追記2025/04/30
python3をアンインストール後にArduinoIDE2.3.6にバージョンアップしたら
あっさり直りました。
以上 めでたしめでたし
◆追記2025/04/30
ところが、python3を再インストールした所、同じ症状がでました。
なんかpython3とIDEが相性悪いみたいです。
そのような、環境では下記のツールが有効です。
◆私の環境だけかもですが「Windows11 X64 24H2」「ArduinoIDE2.3.5」「python3」の
環境でArduinoIDEを終了した後、使用していたフォルダを「削除」「移動」「リネーム」
を実行すると下記のエラーが発生しますので開放するツールを作りました。
他のPCで確認しましたら問題有りませんでした。
よって、私のメインPCの問題みたいです。
◆追記2025/04/30
python3をアンインストール後にArduinoIDE2.3.6にバージョンアップしたら
あっさり直りました。
以上 めでたしめでたし
◆追記2025/04/30
ところが、python3を再インストールした所、同じ症状がでました。
なんかpython3とIDEが相性悪いみたいです。
そのような、環境では下記のツールが有効です。
◆私の環境だけかもですが「Windows11 X64 24H2」「ArduinoIDE2.3.5」「python3」の
環境でArduinoIDEを終了した後、使用していたフォルダを「削除」「移動」「リネーム」
を実行すると下記のエラーが発生しますので開放するツールを作りました。
今回、この問題を調べてみました。
1.フォルダを掴みんでいるプロセスを教えてくれるアプリ「Handle.exe」が有ることを
知りました。Microsoft公式から無料で配布されています
知りました。Microsoft公式から無料で配布されています
①下記からダウンロードして下さい。

②ダウンロードしたら解凍します。
三つファイルが有りますが、自分の環境にあったものを任意のフォルダにコピペします。
私の場合、「handle64.exe」を「c:\00yh\tools」へコピペしました。
➂コマンドプロンプトを管理者として実行します。そして、先のフォルダへ「cd」します。
④試しに「handle64.exe」を実行してみます。
すると「tools」を掴んでいるプロセスが表示されます。
2.では、ArduinoIDEを実行して様子をみてみます。
①実行中
②IDE終了後(まだ二つ掴んだまま)
➂このようにIDEを終了させてもプロセスが掴んだままの為、「削除」「移動」「リネーム」が
出来ないで、エラーとなります。
3.2を踏まえて、悪さしているプロセスを自動で「kill」するツールを作りました。
下記のバッチファイル「ff.bat」です。(Folder Freeの略)
バッチファイルを保存する時は、漢字コードを「Shift-JIS」で保存します。
「UTF-8」だと、文字化けします。
********************ここから**************************************
********************ここまで**************************************

********************ここから**************************************
:: ff.bat
:: V2025/04/29 by JK1VCK
:: blog URL:https://gijin77.blog.jp/archives/41005740.html
@echo off
setlocal enabledelayedexpansion
:: handle.exeのパス(自分の環境に合わせてね)
set "HANDLE_EXE=c:\00YH\tools\handle64.exe"
:: 削除対象のフォルダパス受け取り
if "%~1"=="" (
echo 使用方法: %~nx0 "削除対象フォルダパス"
pause
exit /b
)
set "TARGET_FOLDER=%~1"
:: フォルダ存在確認
if not exist "%TARGET_FOLDER%" (
echo [エラー] フォルダが存在しません: "%TARGET_FOLDER%"
pause
exit /b
)
echo 削除対象フォルダ: "%TARGET_FOLDER%"
echo.
echo フォルダを掴んでいるプロセスを検索中...
:: 一時ファイル削除
if exist temp_handle_result.txt del temp_handle_result.txt
:: handle.exeで対象フォルダを検索
"%HANDLE_EXE%" "%TARGET_FOLDER%" > temp_handle_result.txt 2>nul
:: 掴んでいるかチェック
findstr /i "pid:" temp_handle_result.txt >nul
if %errorlevel%==0 (
echo [警告] 誰かがフォルダを掴んでいます!
echo 掴んでいるプロセス一覧:
set "KILL_LIST="
for /f "tokens=*" %%A in (temp_handle_result.txt) do (
set "LINE=%%A"
echo !LINE! | findstr /i "pid:" >nul
if !errorlevel! == 0 (
rem LINEから"pid:"の位置を探す
set "TMP_LINE=!LINE:*pid:=!"
rem TMP_LINEの先頭からスペースまでを取り出す
for /f "tokens=1 delims= " %%P in ("!TMP_LINE!") do (
set "PID=%%P"
rem プロセス名も表示
for /f "tokens=1" %%N in ("!LINE!") do (
set "PNAME=%%N"
)
echo !PNAME! - PID: !PID!
set "KILL_LIST=!KILL_LIST! !PID!"
)
)
)
echo:
set /p USER_KILL="これらのプロセスを終了しますか? (y/n) [n]: "
if /i "!USER_KILL!"=="y" (
for %%P in (!KILL_LIST!) do (
if not "%%P"=="" (
echo PID %%P を強制終了中...
taskkill /PID %%P /F
)
)
) else (
echo プロセス終了をスキップしました。
)
) else (
echo 誰も掴んでいません!
)
:: 少し待つ
timeout /t 1 >nul
echo.
set /p USER_CONFIRM=このフォルダを削除しますか? (y/n) [n]:
if /i "%USER_CONFIRM%"=="y" (
echo フォルダを削除します...
rmdir /s /q "%TARGET_FOLDER%"
echo 削除完了!
) else (
echo 削除をキャンセルしました。
)
:: 一時ファイル削除
if exist temp_handle_result.txt del temp_handle_result.txt
pause
exit /b
◆使い方(実行例)
①コマンドプロンプトを管理者として実行します。
②ff.batのフォルダに「cd」します。
➂ff フォルダ名
④キャンセルする場合は、「n」を入力します。
「explorer.exe - PID: xxxxx」が表示されたらキャンセルして下さい。
そうしないと画面が真っ暗になり、再起動かサインアウト/サインインすることに
なります。
なります。
その時は、対象のフォルダを表示しているエクスポーラを閉じてから実行してください。
⑥再度実行
⑦プロセスを終了する場合は、「y」を入力します。
⑧削除する場合は、「y」を入力します。
「フォルダ移動」や「リネーム」の場合は、「n」を入力します。

以上で、再起動しなくても「削除」「移動」「リネーム」が出来るようになりました。


































