- ベストアンサー
バッチファイルでexeの場所を検索して起動したい
A.exeをwinのユーザー環境変数に登録しているか、バッチファイルと同じフォルダに存在するとき、どちらかのA.exeでBコマンドを実行 ただし、cdやpushdを使わず相対パスだけで処理したいのですが、どのように記述すればよいのでしょうか ========================= @echo off setlocal set "CurDir=%~dp0" rem 「A.exeの環境変数のpath」もしくは「%CurDir%A.exe」どちらかのA.exeでBコマンド exit /b =========================
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- バッチファイルで環境変数が設定されません
よろしくお願いいたします。 Windows XP Pro の command.com において、バッチファイルの中で set コマンドを使って環境変数を設定しても、バッチから抜けると環境変数の設定ができていません。 バッチ終了後の環境変数は全てバッチ開始前と同じ状態です。 command.com のプロンプトで set コマンドを実行すると、環境変数はセットした内容に変化もしくは追加されます。 cmd.exe ではバッチからでもプロンプトからでも set コマンドで環境変数を操作できます。 なぜ command.com 上のバッチから操作できないのかわからず、不便でかないません。 アドバイスをよろしくお願いいたします。 @echo off set foo=word path=c:\ echo %foo% echo %path% 上記バッチを実行すると word c:\ と表示されますが、set コマンドで確認すると FOO は存在しません PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;... と表示されます。 これはバッチ実行前の値です。
- ベストアンサー
- Windows XP
- バッチファイル(batファイル)
あることを自動化するために、あるサイトのバッチファイルをコピー&ペーストして使おうと思っています。 (自由に使用していいと表記してあります) しかし、使用されているプログラムがいくつか入手できなかったり、バッチファイルをいくつか繋げたらら上手くいかなかったりと、 色々と問題があり、自分で改変をしています。 初めてバッチファイルの中身を触ったような初心者なので、色々と試行錯誤しているのですが、行き詰ってしまいました。 上記のように初心者なので、言葉がおかしい所があったりするかもしれませんが、 回答よろしくお願いします。 本題です。 ファイルのドロップで処理を始めたいのですが、どうやらファイル名に半角の#が含まれていると途中でエラーが出るので、 処理の一番最初でファイル名の半角#を全角#に置き換えようとしたのですが上手くいきませんでした。(ファイル名の変更) なので新たなバッチファイル、"ドロップ用.bat"を作り、そこでファイルの置き換えを行ってから、callコマンドで 本命のバッチファイルaaa.batを呼び出そうとしました。 それでもうまくいかないため、質問させていただきました。 バッチファイルは一つのフォルダーにまとめていますが、ドロップするファイルは別のフォルダーにあります。 なお、ドロップするファイルのフルパスには、空白が含まれる可能性があります。 ドロップ用.bat--------------------------- @echo off setlocal set abc=%~n1 set def=%abc:#=#% ren "%~nx1" %def%%~x1 set ghi="%~dp1%def%%~x1" set jkl=%~dp0 call "%jkl%aaa.bat" "%ghi%" rem pause endlocal exit /b ----------------------------------------- ややこしくてまわりくどいバッチファイルですみません。 Windows7を使っています。 C:\windows\system32\cmd.exeと上には書いてあります。 よろしくお願いします。
- 締切済み
- C・C++・C#
- コマンドライン引数の展開について
バッチファイル内で%~dp0とすれば ファイルが保存されているディレクトリを取得できます。 これを利用して環境変数に set TEST=pushd %~dp0 とセットし、 %TEST% と展開することによって バッチファイルのディレクトリに移動しようとしたのですが、うまく行きませんでした。 ファイルが保存されている場所への移動手段をわかりやすくまとめたいです。 それ以外にも各バッチファイルの先頭で行う処理を共通化する目的があります。 以下のように第一引数として渡すやり方もあるのですが、 test.bat---- call common.bat %~dp0 common.bat---- pushd %~dp1 setlocal 共通化部分ではsetlocalを使うため、 別ファイルに分割してしまうと有効範囲が変更され都合が悪いのです。 何かうまい回避方法はありますでしょうか? (そもそも環境変数内で%~dp0が展開されてくれれば済む話なのですが…)
- ベストアンサー
- Windows系OS
- バッチファイルからVBのEXEの戻り値
いつもお世話になっています。 タイトルの通りなのですが、下記のようなバッチファイルからexeを起動し、exeがエラー終了した場合などに バッチファイルのERRORLEVELにエラーデータ(1)を入れたいのですが それを設定するのはいったいどうやったりいいのかがさっぱりでして…。f(- -; @echo off SETLOCAL call Project1.exe %ERRORLEVEL% echo %ERRORLEVEL% pause exeでのエラーが発生するタイミングなどは特に指定はないので、戻り値の設定の仕方を教えていただきたいです。 言葉足らずや説明不足など補足要求もお待ちしています。 お願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- バッチファイルでサブフォルダにあるexeを実行
お世話になります。 バッチファイルをつかって サブフォルダにあるexeファイルの実行を 試みていますが、exeファイルの指定がうまくできず実行できないので、 ご教示いただけないでしょうか。 pushd %%0\.. でバッチファイル実行フォルダをカレントにしています。 バッチファイル実行ファイルがあるフォルダ000に サブフォルダA、そのなかにサブフォルダB、さらにその中にサブフォルダG1,G2,G3 があり、G1,G2,G3の中に、それぞれaaa.exeがあります。 フォルダ000のバッチファイルからaaa.exeを実行するために、 ファイルの指定をどのようにしたらよいかご教示いただけないでしょうか? よろしくお願いいたします。 フォルダ000 batファイル フォルダA フォルダB フォルダG1 aaa.exe フォルダG2 aaa.exe フォルダG3 aaa.exe バッチファイル内は、 forループで以下のようにしています。 for /L %%i in (2,1,3) do ( A\B\G%%i\aaa.exe )
- ベストアンサー
- Windows系OS
- マックでバッチファイル
WindowsXP用バッチファイル(.CMD)を,MacOS-9の,単数の標準のバイナリー実行ファイルに,完全変換する方法を教えてください。 見た目が同じになれば,バッチをEXE(エグゼファイル)に変換後,それをマック用ファイルにする等,どんな方法でも結構です。 バッチで使用するコマンドは,@ECHO・TITLE・COLOR・SET(環境変数機能を利用した電卓として)・GOTO,です。 改めて,単数の,バイナリー形式の,実行ファイル,である事が条件です。お願いします!
- 締切済み
- その他([技術者向] コンピューター)
- バッチファイルの変数引継ぎについて
行き詰ってしまったので、どなたか知恵を授けていただければと思います。 現在、あるソフトウェアの「バッチモード」という機能を使用したバッチを作成していて、構文が > sdcmd batch ***.txt 上記のようにコマンドを羅列したテキストファイルを指定した実行コマンドになります。 sdcmd以降はソフト指定のコマンド以外は使用できず、変数設定ができない為に変数設定とログ保存を兼ねて上記コマンドを記載したバッチを > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > call aaa.bat %* >> aaa.log 2>&1 という内容の呼び出しバッチを作成たのですが、テキストファイル内の変数が代入されずに 実行されてしまいます。 cmd上から直接 > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > sdcmd batch ***.txt >> aaa.log 2>&1 を実行しても変数の代入は行われませんでした。 cmd上で変数とテキストファイル内のコマンドを手動実行すれば変数は解決できます。 設定した変数を、テキストファイル内の変数値に代入する方法はあるでしょうか。
- 締切済み
- その他(ITシステム運用・管理)
- バッチファイルで昨日の日付を取得
すみません、どなたか教えて下さい。 バッチファイルの記述で、昨日の日付を取得する方法を教えて下さい。 今日の日付は下記のように取得しています。 rem 日時変数の取得 for /f "tokens=1-3 delims=/" %%a in ('echo %date:~-10%') do ( set YYYYMMDD=%%a%%b%%c )
- ベストアンサー
- その他(プログラミング・開発)
- バッチファイルについて
@cmd /k 上記の内容で「a.bat」というファイル名で保存しました。 この保存したファイルをダブルクリックすると、バッチファイルが格納されてるフォルダのパスがコマンドプロンプト上に表示されます。 パス表示後に、いろいろな動作(「echo~」など)を実行したいと思っているんですが、うまくいきません。 どうやら一番上の「@~」を記述したものは、そのあとに「echo~」などを記述しても実行してくれないみたいです。 「@cmd /k」実行後に何か(「echo~」など)を実行するにはどうしたらいいですか?
- 締切済み
- その他(プログラミング・開発)
- ブラウザからバッチ起動時のPathについて
クライアントのPCからブラウザ上でボタンをクリック するとサーバー上のバッチを起動するようにしていますが、サーバー上で直接バッチを起動した場合は正常に動作しています。しかし、ブラウザから起動した場合には一部が正常に動作してくれません。 ブラウザから起動したバッチ上で echo %path% > c:\aaa.txt としてPathを確認しようとしたら「echoはONです」と 出力されていました。 直接起動した場合は環境変数のPathが出力されます。 環境変数で指定しているPathは使えないのでしょうか? ご存知のかたがいらっしゃいましたらご教授お願い致します。 【バッチの内容】 set DT=%date:~2,4%%date:~7,2%%date:~10,2% if "%time:~0,1%"==" " set TM=0%time:~1,1%%time:~3,2%%time:~6,2% if "%time:~0,1%"==" " GOTO :P1 set TM=%time:~0,2%%time:~3,2%%time:~6,2% :P1 set DirName=C:\backup\%DT%_%TM% mkdir %DirName% echo %path% >C:\hammy\hammy.txt aaa.exe 引数 ←ここが正常に動作しない
- ベストアンサー
- Java
補足
AIエージェント あい(@OKWAVE-AI)様、分かりやすい回答ありがとうございます。 また、どこか他人事だと考えていたAIの進化に思いがけず触れることができてとても楽しい思いです。 以下、アドバイスをもとにエラーハンドリングを追加してみました。本来なら控えるようなことなのですが、AIさんに甘えてみたいので、精査いただければ幸いです。 ``` @echo off setlocal set "CurDir=%~dp0" set "ExeName=A.exe" set "CmdArgs=B" call :entrypoint || call :onerror exit /b :onerror echo Error[%ERRORLEVEL%] exit /b :entrypoint echo ===== echo. rem 現在のディレクトリにA.exeがあるかどうかをチェック if exist "%CurDir%%ExeName%" ( "%CurDir%%ExeName%" %CmdArgs% ) else ( rem 現在のディレクトリにA.exeがない場合、パスから探してコマンドを実行 %ExeName% %CmdArgs% ) echo. echo ===== echo. exit /b ```