- 締切済み
.bat(バッチ)から.batを実行したいのですがエラーになってしまいます。
<やりたい事> (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
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
>正確には「'aaaa.bat'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」です。 それが本当なら、 CALL C:\TEMP\aaaa.bat と書いているというのが間違いで、 CALL aaaa.bat と書いているとしか思えない。逆に、本当に CALL C:\TEMP\aaaa.bat と書いていて、 「'C:\TEMP\aaaa.bat'は、内部コマンドまたは外部コマンド~」 というのが正しいエラーメッセージなら、C:\TEMP\aaaa.batが存在しないと言うことです。現象が発生する(最小限の)正確なコードと、正確なエラーメッセージを書いてください。
- khazad-lefty
- ベストアンサー率44% (296/668)
ん?今同じ条件で確認したら'C:\TEMP\aaaa.bat'~ となったんですが…とりあえず私の補足要求もあいまいだったからな…。 とりあえず、そのaaaa.batの中身をpingコマンドなど、何度流してもいいのに置き換えて、 1.それで(1)のバッチを流してどうか(多分失敗すると思いますが) 2.(1)の内容をCallの行だけにしたらどうか 3.コマンドプロンプトから直接「call C:\TEMP\aaaa.bat」を実行したらどうか 等で、原因の絞込みをするしかないのでは?
- khazad-lefty
- ベストアンサー率44% (296/668)
補足要求 エラーメッセージは正確にはこうじゃないでしょうか? 「'(何か)'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 この上で言う(何か)に当てはまる部分は何でしょうか? 上記で言うaaaa.batにあたる部分なのか、それとも別の言葉が入っているのか?
拡張子込みのフルパスで書いている以上CALLしてるファイル名が間違ってる以外に原因は無さそうですが、 質問文がコピー&ペーストしたものだとして文中のaaaaが全角になっていますが、本当にaaaa.batでいいのですか?
お礼
ご回答ありがとうございます。 aaaaは両方とも全角です。(質問文が間違いです。) ※ちなみにメニュー的なバッチは、USBメモリから実行しています。
お礼
言葉足らずですみません。 khazad-lefty様がおっしゃられるとおり正確には 「'aaaa.bat'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」です。 CALLを実行している所で、呼び先(aaaa.bat)が存在しているのに実行できず困っています。