Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- rem ◆Kindle for PCのアカウント切り替え.bat(Windowsアカウント切り替え不要 切り替え時Kindle本の再ダウンロード不要)
- rem http://pastebin.com/Rcik9AE6
- rem ◇更新履歴
- rem 2015/01/26 ver0.0.6 %LocalAppData% が変更されていても動くようにした (hosomi)
- rem 2015/01/23 ver0.0.5 排他処理が甘かったのを修正 / Unlockerを使うようにした (hosomi)
- rem ◇動作確認環境
- rem ・Windows7 Ultimate SP1 32bit + Kindle for PC (amazon.co.jp) ver1.11.0(40617)
- rem ・Windows7 Ultimate SP1 64bit + Kindle for PC (amazon.co.jp) ver1.11.0(40617)
- rem ・Windows8.1 Pro 64bit + Kindle for PC (amazon.co.jp) ver1.11.0(40617)
- rem ◇使用方法
- rem 1. Kindle for PCでログイン、ログイン完了後Kindle for PC終了
- rem 2. Kindle本の置き場所(Kindle for PCの設定から確認・変更可能)に、「!User=父.txt」のようなファイルを置く ※「父」の部分はそのKindle本を所有する者を表すわかりやすい名前に変える
- rem 3. Kindle本の置き場所のフォルダ名の最後に「#父」を付ける ※「父」の部分は2で指定したものと同じにする ※最後のアカウントの場合のみリネーム不要
- rem 4. "%USERPROFILE%\AppData\Local\Amazon\Kindle" に「#父」フォルダを作り、そこに "Cache","Logs","storage","style","webkit" フォルダを移動させる ※「父」の部分は2で指定したものと同じにする ※最後のアカウントの場合のみ移動不要
- rem 5. このバッチファイルへのショートカットファイルを作り、第一引数に切り替えたいKindleユーザー名(2で指定したもの)を指定する 例:「"C:\Users\YOU\Documents\Kindle for PCのアカウント切り替え.bat" "父"」
- rem 6. 持ってるアカウントの分だけ、1~5を繰り返す
- rem 7. 5のショートカットファイルを実行すると、指定アカウントに切り替えてKindle for PCが起動する(通常通り起動させると前回起動時のアカウントで起動するがショートカットからの実行を推奨)
- rem 8. 処理の確実さを上げたい場合、作ったショートカットをすべて管理者権限で実行する設定にして、第2引数を1にしておくと、Unlockerを使用します ※Unlockerのインストールが必要です ※激遅
- setlocal
- set unlocker=""
- if "%~2"=="" (
- echo Unlockerを使用しません
- ) else if exist "%ProgramFiles%\Unlocker\Unlocker.exe" (
- echo Unlockerを使用します
- set unlocker="%ProgramFiles%\Unlocker\Unlocker.exe"
- ) else if exist "%ProgramFiles(x86)%\Unlocker\Unlocker.exe" (
- echo Unlockerを使用します
- set unlocker="%ProgramFiles(x86)%\Unlocker\Unlocker.exe"
- ) else (
- echo Unlocker NotFound
- )
- echo.
- echo ◆レジストリからKindle for PCの設定ファイルなどの置き場所を取得
- rem %USERPROFILE%\AppData\Local
- set regname=Local AppData
- for /f "tokens=1,2,3*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "%regname%"' ) do (
- if "%%i %%j"=="%regname%" call set KINDLE_PATH=%%l\Amazon\Kindle
- )
- echo %KINDLE_PATH%
- echo.
- echo ◆batの排他実行(dirlock)開始
- rem 入れ替えてる途中で起動するとごちゃ混ぜになるので
- if not exist "%KINDLE_PATH%" goto ERROR_Config
- cd /d "%KINDLE_PATH%"
- for /l %%i in (1,1,10) do (
- if not exist "!Kindleアカウント切り替えbat処理中" goto unlocked
- timeout /t 1 /nobreak
- rem ping localhost -n 1 > nul
- )
- echo ERROR: batの排他実行(dirlock)に失敗 強制実行します
- pause
- :unlocked
- mkdir "!Kindleアカウント切り替えbat処理中"
- echo.
- echo ◆レジストリからKindle本の置き場所を取得
- rem /reg:64
- set regname=CONTENT_PATH
- for /f "tokens=1,2*" %%i in ('reg query "HKCU\Software\Amazon\Kindle\User Settings" /v "%regname%"' ) do (
- if "%%i"=="%regname%" set CONTENT_PATH=%%k
- )
- echo %CONTENT_PATH%
- echo.
- echo ◆現在のKindleユーザー名と切り替えたいKindleユーザー名を取得
- rem 取得方法がわからないので、現在のKindle本の置き場所に「!User=父.txt」というファイルを置く ※「父」の部分はわかりやすい名前に変える
- rem このファイルで現在のKindleユーザーを認識する…
- cd /d "%CONTENT_PATH%"
- set NowUser=
- for /f "usebackq" %%i in (`dir /-D /B !User=*.txt`) do (
- set NowUser=%%~ni
- )
- if "%NowUser%"=="" goto ERROR_NowUser
- set NowUser=%NowUser:~6,1000%
- set NewUser=%~1
- if "%NewUser%"=="" goto ERROR_NewUser
- echo %NowUser% -^> %NewUser%
- if "%NowUser%"=="%NewUser%" goto doKindle
- echo.
- echo ◆Kindle for PC終了
- setlocal enabledelayedexpansion
- for /l %%i in (1,1,10) do (
- taskkill /im Kindle.exe
- set PROC=
- for /f "usebackq" %%n in (`tasklist /fi "IMAGENAME eq Kindle.exe" /NH`) do (
- set PROC=%%n
- )
- if /i "!PROC:~0,10!"=="Kindle.exe" (
- rem まだ終了していないので待つ
- timeout /t 1 /nobreak
- rem ping localhost -n 1 > nul
- ) else (
- goto taskkilled
- )
- )
- echo ERROR: Kindle for PCの終了に失敗 Kindle for PCを強制終了します
- pause
- for /l %%i in (1,1,10) do (
- taskkill /im Kindle.exe /f
- set PROC=
- for /f "usebackq" %%n in (`tasklist /fi "IMAGENAME eq Kindle.exe" /NH`) do (
- set PROC=%%n
- )
- if /i "!PROC:~0,10!"=="Kindle.exe" (
- rem まだ終了していないので待つ
- timeout /t 1 /nobreak
- rem ping localhost -n 1 > nul
- ) else (
- goto taskkilled
- )
- )
- echo ERROR: Kindle for PCの強制終了に失敗
- echo.
- set pause=1
- goto end
- :taskkilled
- setlocal disabledelayedexpansion
- echo.
- echo ◆Kindle.exeをリネームして一時的に実行不能化
- rem ここでこのbatを使わずにKindle.exeを起動されるとファイルがごっちゃになる危険性があるので
- rem loop
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\application\Kindle.exe" /S
- rename "%KINDLE_PATH%\application\Kindle.exe" Kindle.exe.disable
- echo.
- echo ◆設定ファイルなど切り替え
- rem 事前確認 ※Ctrl+CされるとKindle.exeが実効できないままになるので、ここではpauseしない
- if not exist "%KINDLE_PATH%" goto ERROR_Config
- cd /d "%KINDLE_PATH%"
- if not exist "#%NowUser%" mkdir "#%NowUser%"
- if exist "#%NowUser%\Cache" (
- echo ERROR: "#%NowUser%\Cache" が既に存在するため、Kindleアカウントの切り替えは行われませんでした
- set pause=1
- goto enableKindle
- )
- if exist "#%NowUser%\Logs" (
- echo ERROR: "#%NowUser%\Logs" が既に存在するため、Kindleアカウントの切り替えは行われませんでした
- set pause=1
- goto enableKindle
- )
- if exist "#%NowUser%\storage" (
- echo ERROR: "#%NowUser%\storage" が既に存在するため、Kindleアカウントの切り替えは行われませんでした
- set pause=1
- goto enableKindle
- )
- if exist "#%NowUser%\style" (
- echo ERROR: "#%NowUser%\style" が既に存在するため、Kindleアカウントの切り替えは行われませんでした
- set pause=1
- goto enableKindle
- )
- if exist "#%NowUser%\webkit" (
- echo ERROR: "#%NowUser%\webkit" が既に存在するため、Kindleアカウントの切り替えは行われませんでした
- set pause=1
- goto enableKindle
- )
- if exist "%CONTENT_PATH%#%NowUser%" (
- echo ERROR: "%CONTENT_PATH%#%NowUser%" が既に存在するため、Kindleアカウントの切り替えは行われませんでした
- set pause=1
- goto enableKindle
- )
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\Cache" /S
- move "Cache" "#%NowUser%\Cache"
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\Logs" /S
- move "Logs" "#%NowUser%\Logs"
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\storage" /S
- move "storage" "#%NowUser%\storage"
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\style" /S
- move "style" "#%NowUser%\style"
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\webkit" /S
- move "webkit" "#%NowUser%\webkit"
- if exist "#%NewUser%" (
- rem すでに移動先がある場合…
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\#%NewUser%\Cache" /S
- move "#%NewUser%\Cache" "Cache"
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\#%NewUser%\Logs" /S
- move "#%NewUser%\Logs" "Logs"
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\#%NewUser%\storage" /S
- move "#%NewUser%\storage" "storage"
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\#%NewUser%\style" /S
- move "#%NewUser%\style" "style"
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\#%NewUser%\webkit" /S
- move "#%NewUser%\webkit" "webkit"
- )
- echo.
- echo ◆Kindle本置き場切り替え
- move "%CONTENT_PATH%" "%CONTENT_PATH%#%NowUser%"
- if exist "%CONTENT_PATH%#%NewUser%" (
- move "%CONTENT_PATH%#%NewUser%" "%CONTENT_PATH%"
- ) else (
- mkdir "%CONTENT_PATH%"
- )
- goto enableKindle
- :enableKindle
- echo.
- echo ◆Kindle.exe.disableをリネームして実行可能化
- rem loop
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\application\Kindle.exe.disable" /S
- rename "%KINDLE_PATH%\application\Kindle.exe.disable" Kindle.exe
- goto doKindle
- :ERROR_Config
- echo.
- echo ERROR: "%KINDLE_PATH%" が見つかりません。
- echo Kindle for PCがインストールされていないか、アップデートされて仕様が変わってしまったようです。
- echo.
- set pause=1
- goto end
- :ERROR_NowUser
- echo.
- echo ERROR: Kindle本の置き場所("%CONTENT_PATH%" Kindle for PCの設定から確認・変更可能)に、「!User=父.txt」のようなファイルを置いてください。※「父」の部分はそのKindle本を所有する者を表すわかりやすい名前に変える
- echo.
- start explorer /root,"%CONTENT_PATH%"
- set pause=1
- goto end
- :ERROR_NewUser
- echo.
- echo ERROR: 第一引数に「父」のようなものを指定してください。
- echo よくわからない場合、%0 をメモ帳で開いて使用方法を再確認してください。
- echo.
- set pause=1
- goto end
- :doKindle
- echo.
- echo ◆Kindle for PC起動
- cd /d "%KINDLE_PATH%\application\content"
- start "" /max "%KINDLE_PATH%\application\Kindle.exe"
- goto end
- :end
- echo.
- echo ◆batの排他実行(dirlock)終了
- setlocal disabledelayedexpansion
- rem loop
- if not %unlocker%=="" %unlocker% "%KINDLE_PATH%\!Kindleアカウント切り替えbat処理中" /S
- rmdir "%KINDLE_PATH%\!Kindleアカウント切り替えbat処理中"
- echo.
- if not "%pause%"=="" pause
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement