バッチファイルをexe化した際の実行パスの挙動について
・実行中のバッチファイルと同階層に存在する特定のファイルを、指定のフォルダに移動させる
・移動に失敗した場合、エラーログをバッチファイルと同階層に生成する
という動きをバッチファイルで行っています。
samole.bat
1cd /d %~dp0 2copy sample.html %userprofile%\Documents 3if %errorlevel% == 0 ( 4 if exist %userprofile%\Documents\sample.html ( 5 echo 終了コード %errorlevel%:コピー成功 >> error.log 6 ) 7) else ( 8 echo 終了コード %errorlevel%:コピー失敗 >> error.log 9 copy sample.html %userprofile%\Documents >> error.log 2>>&1 10 echo; >> error.log 11 exit /b 12)
バッチファイルで実行する場合は想定通りの挙動になる(デスクトップに作ったフォルダに.batファイルを入れ実行するとエラーログも同階層に生成される)のですが、
書き換えられないようにexe化したく、Visual batでexeにデスクトップのフォルダから実行し、
実行パスを取得すると、下記となっています。
C:\Users\user名\AppData\Local\Temp
以前pyファイルをexe化した時も同様のことが起こり、調べたところ
①スクリプトの実態をtemporaryフォルダににコピーする
②スクリプトを実行する
という流れのため置いた場所と、実行している場所が異なるというのが分かりました。
そのため、今回も同様だと思うのですが、.batでの実行ファイルまでのフルパスを取得する方法が調査しても掴めず、考え方をご教示いただきたいです。