質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

受付中

バッチファイルをexe化した際の実行パスの挙動

emanu
emanu

総合スコア2

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

4回答

0評価

0クリップ

357閲覧

投稿2022/06/29 12:59

編集2022/06/30 08:58

バッチファイルをexe化した際の実行パスの挙動について

・実行中のバッチファイルと同階層に存在する特定のファイルを、指定のフォルダに移動させる
・移動に失敗した場合、エラーログをバッチファイルと同階層に生成する
という動きをバッチファイルで行っています。

samole.bat

cd /d %~dp0 copy sample.html %userprofile%\Documents if %errorlevel% == 0 ( if exist %userprofile%\Documents\sample.html ( echo 終了コード %errorlevel%:コピー成功 >> error.log ) ) else ( echo 終了コード %errorlevel%:コピー失敗 >> error.log copy sample.html %userprofile%\Documents  >> error.log 2>>&1 echo; >> error.log exit /b )

バッチファイルで実行する場合は想定通りの挙動になる(デスクトップに作ったフォルダに.batファイルを入れ実行するとエラーログも同階層に生成される)のですが、
書き換えられないようにexe化したく、Visual batでexeにデスクトップのフォルダから実行し、
実行パスを取得すると、下記となっています。

C:\Users\user名\AppData\Local\Temp

以前pyファイルをexe化した時も同様のことが起こり、調べたところ
①スクリプトの実態をtemporaryフォルダににコピーする
②スクリプトを実行する
という流れのため置いた場所と、実行している場所が異なるというのが分かりました。
そのため、今回も同様だと思うのですが、.batでの実行ファイルまでのフルパスを取得する方法が調査しても掴めず、考え方をご教示いただきたいです。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

otn

2022/06/29 23:49 編集

> .batでの実行ファイルまでのフルパスを取得する方法 調べるべきは、EXE化に使用したツールの仕様でしょう。そのツールでの %~dp0 が何を表すのか。
emanu

2022/06/29 22:51

アドバイスいただきありがとうございます。 ご指摘いただき、visual batでのexe生成時の挙動について調査していたのですが、思うような内容に辿り着けておらず、大変申し訳ないのですが、どのようなキーワードで調査すべきかご教示いただけないでしょうか。 調べたのは、exe化する際の展開先、dp0、visual batの仕組みなどです。
otn

2022/06/29 23:49

Visual batのサイト(どこ??)を隅から隅まで読むのでしょうかね。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。