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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

2回答

16458閲覧

windowsでbatにpathを通してexeを実行する事と、exeにpathを通す事の違いは?

Fushihara

総合スコア52

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2018/11/11 03:12

編集2018/11/11 03:15

windowsのコマンドプロンプトについての質問です。windows10。

パスを通すという作業が面倒くさいと思い、以下の環境を作ってみました。

  • 環境変数のPATHに、C:\example\ というパスを登録する
  • C:\example\の中に、hoge.batkage.batを好きなだけ設置する
  • hoge.batの中身は以下のような感じ。
@echo off "C:\test\hoge.exe" %*

こうすれば、パスを通す先を追加してもターミナルの再起動は不要だし、C:\example\の中身をコピペすれば別のPCに引っ越す時も簡単で名案だ!と思ったのですが、普通に環境変数にC:\test\を通した時と挙動が違う場合がありました。

上記の環境のターミナルでhoge arg1 arg2と打ち込んだ場合と、普通に環境変数にC:\test\を通してhoge arg1 arg2と打ち込んだ場合でどのような違いがあるのでしょうか?

上記の環境でhoge arg1 arg2と打ち込んだ時、まずhogeをパスから探す→C:\example\hoge.batがあったのでそれを実行→C:\example\hoge.batの中でC:\text\hoge.exeが実行され、%*が指定されているから引数arg1 arg2hoge.exeに渡されて問題なし!と思っていました。

C:\test\hoge.exeC:\test\hoge-library.dllを読み込んでいる時は挙動に違いが出ますが、それ以外にもexeの実行方法等で違いがあれば教えて下さい。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

PATHは、実行ファイルを探すのに使われる他、DLLなどを探す場合に使われることがあります
なので、パスを通さないと実行できないアプリがあったりします。
ということで、BATファイルは

BAT

1PATH=<アプリのパス>;%PATH% 2hoge.exe

というふうに書いておきましょう

投稿2018/11/11 03:21

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/11/11 10:31 編集

それだと、実行する度にPATHがどんどん長くなってしまいますので、setlocalを入れた方が良いでしょう。
y_waiwai

2018/11/11 10:39

BATファイルに書くだけだと終わったらもとに戻りますよ
otn

2018/11/11 11:13

元に戻りませんよ。 CMD.EXEからバッチスクリプトを呼び出すと、呼び出したCMD.EXEと同じレベルで実行されるので、環境変数は呼び出したCMD.EXEと同じものを更新します。
pepperleaf

2018/11/11 11:18

手元のコマンドプロンプトで確認済み。 (Windows10) どんどん、追加されます。 ただし、コマンドプロンプトで作業する人は今では少数派かと。
y_waiwai

2018/11/11 11:18

ああ、同じコマンドプロンプトを使いまわしするような使い方だと溜まっていきますね ってそういうはなしなのかな?
otn

2018/11/11 11:21

> こうすれば、パスを通す先を追加してもターミナルの再起動は不要だし、 > 上記の環境のターミナルでhoge arg1 arg2と打ち込んだ場合 そういう話ですよ。
y_waiwai

2018/11/11 11:26 編集

私にはそうは読めませんでしたね。 (あわよくば)ターミナルの再起動は不要にできる。と読んでました まあ、質門くんに判断してもらえばいいことかと。
otn

2018/11/11 11:31

再起動不要=使い回し
guest

0

※C:\test\hoge.exeがC:\test\hoge-library.dllを読み込んでいる時は挙動に違いが出ますが、

他の違いは特にないんじゃないかと。
ただ、類似の問題で、内部で、他の実行プログラムとかを呼び出しているいる場合、同様にエラーとなります。
最近では、Anadonda3 を更新したら、以前のBatファイルで起動した時、importで続々とエラー。 なんでかと調べたら、実行時のパス不足でした。自分で作成したアプリなら、ともかく他から入手したアプリの場合、要注意みたいです。

あと、バッチファイルで、Pathを追加した場合、終了後もそのPathは残るので、こちらも注意。(コマンドプロンプトからの実行)
検索順序が変わって、問題を起こすことも。(同名のファイルが複数ある場合)

投稿2018/11/11 05:17

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問