アプリ版:「スタンプのみでお礼する」機能のリリースについて

<やりたい事>
(1)メニュー的なバッチからOracleインストール後
(2)OracleのDB作成sqlを実行する.bat(バッチ)を実行する。

<現状>
メニュー的バッチから(2)をCALLで呼びだすと「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」とコンソールに表示されてしまいます。

コマンドの拡張子を実行できる設定になっている事は確認できています。
また、コマンドプロンプトから(2)のバッチを実行すると実行できました。

色々と調べて見たのですが原因、解決策が見つかりません。
どうか皆様のお力をお借りできればと思います。

宜しくお願いします。

↓以下バッチの詳細

<(1)メニュー的なバッチ>
ECHO OFF

:Start
ECHO.
ECHO 1. ・・・ 運用APLデータベース設定 %P5%
ECHO 99. ・・・ 終了

SET Process=
SET Choice=
SET /p Choice=Type 選択して下さい。
IF '%Choice%'=='1' GOTO MakeDB

:MakeDB
REM 5. 運用APLデータベース設定選択時
SET Process=運用APLデータベース設定
ECHO *** "%Process%"開始 ***
REM 文字変換バッチ実行
CALL C:\TEMP\aaaa.bat
IF ERRORLEVEL 1 GOTO ExceptionError

:InputError
REM 入力エラー時
ECHO 不正なパラメータが入力されました。
GOTO Start

:ExceptionError
REM 例外エラー時
ECHO ******** 失敗しました。 ********
GOTO Start

:End
REM バッチを終了する。
EXIT

<(2)OracleのDB作成sqlを実行する.bat(バッチ)>
SET ORACLE_INSTALL_DIR=C:\oraclexe
SET ORACLE_BIN_DIR=%ORACLE_INSTALL_DIR%\app\oracle\product\10.2.0\server\BIN
SET ADMIN_DIR=%ORACLE_INSTALL_DIR%\app\oracle\admin\XE
SET ORADATA_DIR=%ORACLE_INSTALL_DIR%\oradata\XE
SET DBS_DIR=%ORACLE_INSTALL_DIR%\app\oracle\product\10.2.0\server\dbs
SET USERNAME=aaa
SET PASSWORD=bbb

REM // LOGファイル名用に日付の取得 //
FOR /F "tokens=1,2,3 delims=/, " %%i IN ('date /t') DO SET SYSDATE=%%i%%j%%k

REM // 「Win31J」に文字変換 //
ECHO 文字変換開始 %date% %time% >> "C:\install%SYSDATE%.log"
"%ORACLE_BIN_DIR%\sqlplus" %USERNAME%/%PASSWORD% as sysdba @C:\TEMP\Drop.sql >> "C:\install%SYSDATE%.log"
IF ERRORLEVEL 1 GOTO ExceptionError

ECHO DBユーザー作成開始 %date% %time% >> "C:\install%SYSDATE%.log"
"%ORACLE_BIN_DIR%\sqlplus" %USERNAME%/%PASSWORD% as sysdba @C:\TEMP\CreateDB.sql >> "C:\install%SYSDATE%.log"
IF ERRORLEVEL 1 GOTO ExceptionError

A 回答 (4件)

>正確には「'aaaa.bat'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」です。



それが本当なら、
CALL C:\TEMP\aaaa.bat
と書いているというのが間違いで、
CALL aaaa.bat
と書いているとしか思えない。逆に、本当に
CALL C:\TEMP\aaaa.bat
と書いていて、
「'C:\TEMP\aaaa.bat'は、内部コマンドまたは外部コマンド~」
というのが正しいエラーメッセージなら、C:\TEMP\aaaa.batが存在しないと言うことです。現象が発生する(最小限の)正確なコードと、正確なエラーメッセージを書いてください。
    • good
    • 0

ん?今同じ条件で確認したら'C:\TEMP\aaaa.bat'~


となったんですが…とりあえず私の補足要求もあいまいだったからな…。

とりあえず、そのaaaa.batの中身をpingコマンドなど、何度流してもいいのに置き換えて、

1.それで(1)のバッチを流してどうか(多分失敗すると思いますが)
2.(1)の内容をCallの行だけにしたらどうか
3.コマンドプロンプトから直接「call C:\TEMP\aaaa.bat」を実行したらどうか

等で、原因の絞込みをするしかないのでは?
    • good
    • 0

補足要求


エラーメッセージは正確にはこうじゃないでしょうか?
「'(何か)'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
この上で言う(何か)に当てはまる部分は何でしょうか?
上記で言うaaaa.batにあたる部分なのか、それとも別の言葉が入っているのか?
    • good
    • 0
この回答へのお礼

言葉足らずですみません。
khazad-lefty様がおっしゃられるとおり正確には
「'aaaa.bat'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」です。

CALLを実行している所で、呼び先(aaaa.bat)が存在しているのに実行できず困っています。

お礼日時:2009/01/04 01:15

拡張子込みのフルパスで書いている以上CALLしてるファイル名が間違ってる以外に原因は無さそうですが、


質問文がコピー&ペーストしたものだとして文中のaaaaが全角になっていますが、本当にaaaa.batでいいのですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
aaaaは両方とも全角です。(質問文が間違いです。)

※ちなみにメニュー的なバッチは、USBメモリから実行しています。

お礼日時:2009/01/04 01:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!